Почему BackgroundWorker всегда занят?
Я понял что-то странное в фоновом рабочем приложении в приложении WPF.
То, что я пытаюсь сделать прямо сейчас, это ждать, пока BW не закончит запуск другого потока.
Проверьте следующий код:
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();
}
Обратите внимание, что я добавил Dispatcher.Invoke, чтобы дождаться, пока bw не будет занят, но ВСЕ ВРЕМЯ ЗАНЯТО, если я вызываю его и никогда не запускаюRunWorkerAsyncCompleted
мероприятие. Хотя, если я удаляю эту строку, запускается событие, и это действительно странно.
Как я могу ждать, пока не закончится BW?