Sto cercando di capire un modo per verificare che un filo BackgroundWorker è vivo (cioè ancora in corso Il filo è essenzialmente implementato come un semplice ciclo infinito:.IsBusy di BackgroundWorker è uguale a "IsAlive"?
while (AllConditionsMet())
{
DoSomeMagic();
Thread.Sleep(10000);
}
La cosa più vicina a IsAlive()
ho trovato finora è la proprietà IsBusy, ma dato che il mio sonno filo() s la maggior parte del tempo, non sono sicuro se questo farà il lavoro
Posso contare su IsBusy a fare:.
if (!myWorker.IsBusy)
RestartWorker();
o sto chiamando per guai?
se isBusy è falso, Backgroundworker non sta facendo un lavoro, quindi non ci si mette nei guai usando il codice mostrato. Solo il metodo "RestartWorker()" è errato, perché Worker non è stato avviato. Ma è più una questione linguistica che un problema di programmazione. – jAC
Si sta cercando un problema se si implementa il codice all'interno del thread per riavviarsi. Sarebbe meglio, rilevando una condizione di errore, terminando il thread e riavviando un thread completamente nuovo. Altrimenti potresti molto probabilmente avere una situazione di stallo. –