WPF Dispatcher Thread - Использование лямбда-выражения и throw для отправки исключения в поток пользовательского интерфейса. - PullRequest
3 голосов
/ 01 декабря 2011
try
{
    string s = null;
    s.PadLeft(10);
}
catch (Exception ex)
{
    // send exception to UI Thread so it can be handled by our global exception 
    // handler
    Application.Current.Dispatcher.Invoke(DispatcherPriority.Send, 
        new Action<Exception>(e => { throw ex; }), ex);
}

Как видите, команда throw ex усекает трассировку стека, я хотел бы использовать throw вместо throw ex, но я получаю:

Оператор throw без аргументов не допускается за пределами предложения catch.

Как я могу использовать лямбда-выражение для генерирования исключения без усечения трассировки стека?

1 Ответ

2 голосов
/ 01 декабря 2011

Почему бы вам просто не создать новое исключение со старым исключением как InnerException?

e => throw new WhateverException("your message", ex);

Это сохраняет исходную трассировку стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...