Autor Beitrag
Breakdowncookie
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 12.02.10 12:37 
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.
ausblenden 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:
ausblenden C#-Quelltext
1:
Fraction[key].Length = TotalSize;					


Wie löst man das jetzt am elegantesten..?
Danke und LG
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 12.02.10 19:32 
Merk dir einfach, Structs niemals 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.

_________________
>λ=