Entwickler-Ecke

Basistechnologien - Dictionary aus string und struct


Breakdowncookie - Fr 12.02.10 12:37
Titel: Dictionary aus string und struct
Hallo,

ich bin neu hier und arbeite gerade an meinem ersten Projekt mit C#. Dazu hätte ich eine Frage.

Ich habe ein Struct-Array u.a. mit je einem Threading.Thread.

C#-Quelltext
1:
2:
3:
4:
5:
6:
private struct structFraction
{
    public long Position;
    public long Length;
    public System.Threading.Thread Thread;
}

Wenn der Thread abgeschlossen ist (er bekommt jeweils den Index des ihn betreffenden Array-Elements), soll er "seinen" Eintrag aus dem Array löschen.
Problem: Die darüber liegenden Indices stimmen natürlich nicht mehr mit denen, die die Threads am Anfang bekommen haben, überein.
Also dachte ich, ich ersetz das Array durch ein ohnehin viel schöneres Dictionary. Das Dumme daran ist bloß, dass ein Dictionary, genau wie Lists, nicht das direkte Verändern von Struct-Attributen unterstützt.
Das hier geht also nicht:

C#-Quelltext
1:
Fraction[key].Length = TotalSize;                    


Wie löst man das jetzt am elegantesten..?
Danke und LG


Ralf Jansen - Fr 12.02.10 13:23

Was ist dein Grund überhaupt hier einen struct zu verwenden? Spricht etwas dagegen einfach eine Klasse daraus zu machen?
Zur Verwaltung multipler Threads gibt es bereit die ThreadPool Klasse vielleicht hilft dir die bereits anstatt die Verwaltung selbst zu übernehmen.


Breakdowncookie - Fr 12.02.10 18:07

"einfach eine Klasse daraus zu machen" ... Macht ja auch keinen Unterschied, dachte ich.
Habs aber trotzdem probiert, um sicher zu gehen und ... ja, es geht. Ich weiß zwar nicht, was nun der Unterschied ist, aber es geht. Danke.


Kha - Fr 12.02.10 19:32

Merk dir einfach, Structs niemals [http://stackoverflow.com/questions/441309/why-are-mutable-structs-evil] für veränderbare Daten einzusetzen, das genügt bereits ;) .

PS: Wenn du Elemente löschen musst, wäre eine List<T> passender. Und Ralf wird wahrscheinlich recht haben, dass es insgesamt eine bessere Lösung geben könnte.