Laden...

Backgroundworker "hart" abschießen

Erstellt von Viper2000 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.493 Views
V
Viper2000 Themenstarter:in
63 Beiträge seit 2008
vor 14 Jahren
Backgroundworker "hart" abschießen

Hallo,

habe ein Problem mit einem Backgroundworker. Nutze eine DLL die ein Gerät ansteuert. Die ausführung des Codes geschieht in einem Backgroundworker. Klappt alles wunderbar. Ab und zu kann es aber vorkommen, dass die DLL Funktion nicht mehr zurückkehrt. In diesem Fall würde ich gerne den Backgroundworker hart beenden.

Ist so etwas möglich?

Gruß

5.742 Beiträge seit 2007
vor 14 Jahren

Hallo Viper2000,

Ab und zu kann es aber vorkommen, dass die DLL Funktion nicht mehr zurückkehrt. In diesem Fall würde ich gerne den Backgroundworker hart beenden.
Ist so etwas möglich?

Nicht, dass ich wüsste.

Verwende in diesem Fall lieber einen "normalen" Thread.

S
82 Beiträge seit 2008
vor 14 Jahren

Der müsste ja dann in der Prozessliste auftauchen dieser BackgroundWorker, oder?

Dann hol dir doch die Prozessliste, prüfe den dazugehörigen Prozess, und beende den Prozess, wenn er eben keine Rückmeldung mehr gibt...

3.971 Beiträge seit 2006
vor 14 Jahren

Ist so etwas möglich?

Nein geht nicht und sollte auch nicht gemacht. Grund, BGW arbeitet mit einem ThreadPool-Thread. Würdest du Thread.Abort aufrufen, wäre deine AppDomain im Ar***.

Was du machen kannst, statt des BGW das asynchrone Entwurfsmuster von MS verwenden oder aber du lagerst den unsicheren Teil des Codes in eine seperate AppDomain aus und zerstörst diese.

Eventuell hilft dir folgender Thread weiter: Thread TimeOut

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

3.971 Beiträge seit 2006
vor 14 Jahren

Hallo Schmitzo,
ist eine schlechte Idee den eigenen Prozess abzuschießen.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

S
82 Beiträge seit 2008
vor 14 Jahren

Das stimmt natürlich 😁

V
Viper2000 Themenstarter:in
63 Beiträge seit 2008
vor 14 Jahren

Okay, danke!