Я хочу запустить операцию в фоновом потоке. Когда он завершится, я хочу проверить наличие ошибок и перебросить их в исходную ветку.
Я использую фонового работника. Создание исключения в обработчике событий RunWorkerCompleted приводит к необработанному исключению - это имеет смысл, если обработчик событий выполняется в фоновом потоке. Если бы у меня был элемент управления winform, я мог бы вызвать Invoke или BeginInvoke, но у меня нет элемента управления winform в этом объекте, хотя это проект winform.
Как я могу повторно вызвать исключение, которое произошло в фоновом режиме?
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
// I want to throw an exception here, without causing an unhandled exception and without being able to call Invoke or BeginInvoke on a WinForm control.
}
else if (e.Cancelled)
{
// Do something useful
}
else
{
if (e.Result != null)
{
// Do something with the result
}
}
}
Я бы предположил, что обработчик событий RunWorkerCompleted будет работать в исходном вызывающем потоке. Возможно, в этом случае мне не нужен фоновый работник.