Por que o BackgroundWorker está sempre ocupado?
Eu percebi algo estranho no meu trabalho em segundo plano no meu aplicativo WPF.
O que estou tentando fazer agora é esperar até que o BW termine de iniciar outro tópico.
Verifique o seguinte código:
if (bw.IsBusy)
{
bw.CancelAsync();
System.Threading.ThreadStart WaitThread =
new System.Threading.ThreadStart(delegate() {
while (bw.IsBusy)
{
System.Threading.Thread.Sleep(100);
}
bw.RunWorkerAsync();
});
System.Windows.Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
WaitThread); // if I remove this line, bw fires RunWorkerAsyncEvent
}
else
{
bw.RunWorkerAsync();
}
Por favor, note que eu adicionei um Dispatcher.Invoke para esperar até que o bw não esteja ocupado, mas TODO O TEMPO ESTÁ OCUPADO se eu invoco e nunca dispareiRunWorkerAsyncCompleted
evento. Embora, se eu remover essa linha, FIRES o evento e é realmente estranho isso.
Como posso esperar até que o bw termine?