Autor Beitrag
dark-destination1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Mo 17.10.11 14:42 
Gegoogelt hab ich schon.
Leider mit keinem überzeugendem Ergebnis.
Ich starte einen Backgroundworker und führe dort meine langwirigen Aktionen aus.
Nun ist diese Form eine "mdi" Form im Hauptformular.
Wenn der Nutzer zunächst die langwierige funktion ausführt und dann die form schließt (zum beispiel wenn es zulange dauert)
fliege ich direkt in eine exception, da ich steuerelement werte abfrage in der langwierigen aktion.
mit backgroundworker.CancelAsync(); komme ich nicht weit, weil der prozess trotzdem weiter läuft.
ich könnte frage ob das usercontrol null ist, aber es muss doch eine bessere variante geben. Das heißt der backgroundworker soll sofort aufhören mit der aktion.
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: Mo 17.10.11 14:53 
Sich eine Property ausdenken die man im Backgroundworker regelmäßig abfragt. Wenn die Property von außen gesetzt wird kann sich der Backgroundworker dann selbst beenden. Diese Property dann beim schließen der Form setzen, abwarten bis der Backgroundworker beendet ist und dann die Form sich auch wirklich beenden lassen.
dark-destination1988 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Mo 17.10.11 14:56 
naja das ist eine möglichkeit aber so richtig den backgroundworker "killen" kann man nicht?
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: Mo 17.10.11 15:10 
Bestimmt. Aber der Best Practice ist das sich ein Thread (egal wie der gekapselt ist) immer selbst beendet. Das von außen zu machen ist böse!! (Weil die Korrektheit bezüglich Deadlocks, Race Conditions etx. sonst kaum sicher zu stellen ist bzw. logisch auch nicht möglich ist).