Ich versuche, einen Weg, um herauszufinden, zu überprüfen, ob ein Background Thread am Leben ist (dh noch läuft der Faden im Wesentlichen als eine einfache Endlosschleife implementiert wird.Ist IsBusy von BackgroundWorker identisch mit "IsAlive"?
while (AllConditionsMet())
{
DoSomeMagic();
Thread.Sleep(10000);
}
Die nächste Sache zu IsAlive()
fand ich so weit aber die IsBusy Eigenschaft, da mein Thread Sleep() s die meiste Zeit, ich bin nicht sicher, ob dies die Arbeit machen wird
Kann ich auf IsBusy zählen zu tun.
if (!myWorker.IsBusy)
RestartWorker();
oder rufe ich nach Ärger?
Wenn isBusy falsch ist, führt der Backgroundworker keine Arbeit aus, so dass Sie nicht in Schwierigkeiten geraten, wenn Sie den angezeigten Code verwenden. Nur die Methode "RestartWorker()" ist falsch, weil der Worker nicht gestartet wurde. Aber das ist eher eine Sprache als ein Programmierproblem. – jAC
Sie bitten um Probleme, wenn Sie Code innerhalb des Threads implementieren, um sich selbst neu zu starten. Es wäre besser, einen Fehlerzustand zu erkennen, den Thread zu beenden und einen ganz neuen Thread neu zu starten. Sonst könnte es sehr wahrscheinlich zu einer Deadlock-Situation kommen. –