Zitat:
|
hier wurde mir schon einmal gut geholfen. Ich hoffe diesmal wieder. Danke.
|
Wir danken auch.
Bevor ich auf das eigentliche Problem eingehe will ich ein paar grundlegende Sachen klarstellen:
Zitat:
|
Buttonclick leitet Event an Controller weiter
|
In WinForms lässt sich MVC so wie du es vorhast nicht umsetzen. Per Definition ist der Controller für die Verarbeitung der Benutzereingaben zuständig. Das sind in WinForm die Ereignishandler welche die UI-Events binden. Somit verschmilzt aus Code-Seite View und Controller zu einem. Den Ansatz den du verfolgst - der auch gut ist - nennt sich Model View Presenter (MVP). Benenne als deinen Controller in Presenter um und es passt.
Zitat:
|
delegate void GenericDelegate();
|
Der Name ist ungünstig gewählt. Der Delegat hat nichts mit Generic zu tun. Für generische Delegaten siehe
Generische Delegaten (C#-Programmierhandbuch)
Ich finde es merkwürdig dass ich (täglich) mit Generics arbeite aber es mir nicht möglich ist in einem Satz zu definieren was Generics sind
Zitat:
|
Leider hängt sich das Prog auf.
|
Das ist ein Klassiker wenn Threads von unerfahrenen Benutzern verwendet werden (nicht böse gemeint - den Fehler hab ich auch mal gemacht).
Wie korrekt von Threads auf UI-Elemente zugegriffen wird zeigt
Gewusst wie: Threadsicheres Aufrufen von Windows Forms-Steuerelementen
Ergänzende Information: Mit Application.Run() wird der UI-Thread gestartet. Alles was mit UI zu tun ist ausschließlich in diesem Thread. Bei nicht-UI-Threads könne die Felder/Eigenschaften threadübergreifend manipuliert werden. Nicht jedoch beim Zugriff eines Threads auf den UI-Thread.
mfG Gü
Persönliche Anmerkung die nicht auf dich persönlich abziehlt:
Genau das hab ich befürchtet: Mit .net 4.0 ist es für jeden möglich Parallelverarbeitung durchzuführen ohne dass die grundlegenden Kenntenisse von Threading existieren. Dieses und weitere solcher Probleme werden in Zukunft immer öfter auftreten das es sehr verlockend und als Hype gilt mit mehreren Threads zu arbeiten. Ich bin dennoch der Meinung dass dieses Werkzeug nur dann sinnvoll eingesetzt werden kann wenn die Grundlagen wie zB Threadsynchronisation verstanden werden - auch wenn das Werkzeug viel von den Mechanismen die im Hintergrund tätig sind wegabstrahiert. Ich habe zB noch keinen Artikel über das Task-Parallel-Library gesehen der darauf eingeht welche Problem sich parallelisieren und nicht parallelisieren lassen.
Es ist gut zu überlegen ob die zu verarbeitenden Daten unabhängig voneinander sind - nur dann ist eine Parallelisierung möglich.