WPF Dispatcher Thread-使用lambda表达式并抛出将异常分派给UI线程

时间:2011-12-01 08:19:26

标签: c# multithreading delegates lambda throw

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,但我得到:

  

不允许在catch子句之外使用不带参数的throw语句。

如何在不截断stacktrace的情况下使用lambda表达式抛出异常?

1 个答案:

答案 0 :(得分:2)

为什么不用新的异常作为InnerException创建一个新的Exception?

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

保留原始的堆栈跟踪。