2013-12-09 3 views
0

Я использую фоновых работников в моем проекте wcf для обработки асинхронных веб-сервисов.Получите оригинальное поднятое исключение в RunWorkerCompletedEventHandler

Вот как я инициализация работника:

worker.DoWork += new DoWorkEventHandler(DoWork); 
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted); 
worker.RunWorkerAsync(); 

Для обработки ошибок, я должен вызывать исключения в моем методе DoWork ... Как это:

throw new WebFaultException<MyAsyncResult>(
    new MyAsyncResult("Description of the error"), 
    HttpStatusCode.InternalServerError 
); 

Наконец, я получаю это исключение в RunWorkerCompleted:

void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    if (!(e.Error == null)) 
    { 
     < Do something with e.Error > 
    } 
    else 
    ... 
} 

Моя проблема:

e.Error Я получаю, похоже, не исключение orignal, которое я поднял! В самом деле, я не могу использовать его как исключение WebFaultException, и он пропускает объект «MyAsyncResult», который я передал как параметр. У кого-нибудь из вас была такая проблема?

+1

Имеет ли 'e.Error'' InnerException'? – JeffRSon

+0

Действительно ли вы проверили, какой тип объекта e.Error содержит? –

+0

@JeffRSon e.Error as no InnerException – Nicolas

ответ

1

Вам необходимо бросить e.Error в WebFaultException<MyAsyncResult>! Не общее значение WebFaultException - это еще одна вещь.

+0

Вот и все! благодаря – Nicolas

Смежные вопросы