Почему исключение не перехватывается в подпрограмме BackgroundWorker DoWork? - PullRequest
2 голосов
/ 07 июня 2011

Либо я выбрасываю исключение, либо вызываю его естественным образом в DoWork, и оно не перехватывается, и управление не передается рабочей подпрограмме завершения, вместо этого получается то исключение, которое я перехватываю в файле Program.csпрограмма

// ...
BackgroundWorker worker = new BackgroundWorker();                
worker.WorkerSupportsCancellation = true;
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);                
worker.RunWorkerAsync(); 
// ...

void worker_DoWork(object sender, DoWorkEventArgs e)
{
    // ... 
    throw new Exception("I want to be caught and passed to completed event handler")   
    // ...
}

1 Ответ

0 голосов
/ 07 июня 2011

Вы также можете попытаться поймать свое исключение в worker_DoWork.Таким образом, он не будет распространяться в другом месте.

...