Hi!
Auch wenn es vielleicht möglich ist, so von BackgroundWorker
abzuleiten, dass RunWorkerCompleted NICHT gefeuert wird, halte
ich das Vorgehen für nicht sinnvoll.
Warum?
Das Ereignis wird genau dann ausgelöst, wenn die Bedingung
erfüllt ist (also die Threadprozedur abgearbeitet ist). Hieran
zu drehen ändert die Semantik des Ereignisses, und das sollte
man unterlassen.
Ebenfalls warum? Klar ändert man die Semantik damit, aber wenn es erwünscht ist? Wenn man ableitet wird immer irgendeine Semantik geändert, das ist der Sinn einer Ableitung und das ist einer der Hauptbestandteile der OOP und die wird wohl keiner in Frage stellen wollen.
Wenn Dich unter bestimmten Bedingungen das Ereignis nicht
interessiert, dann steht es Dir frei, keinen EventHandler
damit zu verknüpfen oder einen eingehängten EventHandler
wieder zu entfernen.
Gute Idee, aber nicht realisierbar, denn wenn alles abgearbeitet ist soll das Event gefeuert werden. KLar, einen neuen Eventhandler schreiben wäre eine Idee, aber warum, es gibt doch schon einen, der genau das tut was ich will, eben nur nicht immer zum richtigen Zeitpunkt.
Falls Du aus Deiner ThreadProzedur weitere Threads startest
und auch noch auf die Beendigung dieser Threads warten
möchtest, dann schau’ Dir mal Thread.Join an, darüber
kann man Threads zusammenführen/synchronisieren.
Ich selber starte keine neuen Threads, ich lasse einfach noch ein paar Dinge abarbeiten im selben Thread wie der Worker selbst. Aber trotzdem danke für den Tip, den kannte ich noch nicht und kann ihn aber wo anders brauchen.
Tja, wenn keiner eine Idee hat, muss ich wohl damit leben und in den EventArgs entsprechend was übergeben und auslesen.
Sebo