Вызвать метод в главном потоке без элемента управления WinForm чтобы вызвать Invoke или BeginInvoke на

Я хочу запустить операцию в фоновом потоке. Когда он завершится, я хочу проверить наличие ошибок и перебросить их в исходную ветку.

Я использую фонового работника. Создание исключения в обработчике событий 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 будет работать в исходном вызывающем потоке. Возможно, в этом случае мне не нужен фоновый работник.

5
задан Peter Kelly 16 August 2010 в 14:43
поделиться