Итак, у меня есть 2 фоновых работника в приложении Winform, просто назовите их b1 и b2. Вот мой код:Остановить backgroundworker от другого фонового работника C#
private void b1_DoWork(object sender, DoWorkEventArgs e)
{
b2.RunWorkerAsync();
Thread.Sleep(3000);
b2.CancelAsync();
}
private void b2_DoWork(object sender, DoWorkEventArgs e)
{
Global.GetPdfThumbnail(Global.inPDF, Global.outImage);
}
Что я действительно хочу запустить b2 нить и сделать b1 нить сна в течение 3 секунд, а затем остановить b2 нить.
Проблема в том, что после b2.CancelAsync();
инструкции b2 isBusy
по-прежнему верны.
Пожалуйста, помогите!
извините за мой английский!
Это все асинхронной так это занимает некоторое время для системы, чтобы остановить поток. Это объясняет, почему IsBusy верно сразу после CancelAsync. Вы можете подождать, пока IsBusy станет правдой, но не ясно, чего вы пытаетесь достичь. Кажется бессмысленным начать задание, пусть оно запустится в течение 3 секунд и отбросить то, что было сделано. Просьба уточнить вашу основную цель. –