Я использую backgroundworker в UserControls, который я загружаю в панели нажатием кнопки.
Я нажимаю CancelAsync BW в одном UC, затем я иду в другой UC. Когда я хочу вернуться к предыдущему UС (где я отменил BW), я всегда вхожу в событие RunWorkerCompleted.
Я попытался повторно инициализировать BW в конструкторе UC:
bgrWorker = new BackgroundWorker
{
WorkerSupportsCancellation = true,
WorkerReportsProgress = true
};
bgrWorker.DoWork += DoWork;
bgrWorker.ProgressChanged += ProgressChanged;
bgrWorker.RunWorkerCompleted += RunWorkerCompleted;
btnStop.Click += StopWorker;
Но это не работает.
Код события DoWork:
System.Threading.Tasks.Parallel.For(0, _list.Count, num =>
{
if (bgrWorker.CancellationPending)
{
e.Cancel = true;
}
else
{
_splittedList.Add(FindMiddle.Find(_list[num], 20));
bgrWorker.ReportProgress(0);
}
});