WPF调度线程-使用lambda表达式和throw将异常调度到UI线程

本文关键字:线程 调度 异常 UI throw 表达式 使用 lambda WPF | 更新日期: 2023-09-27 18:16:23

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语句。

我如何使用lambda表达式抛出异常而不截断stacktrace?

WPF调度线程-使用lambda表达式和throw将异常调度到UI线程

为什么不创建一个新的异常与旧的异常作为InnerException?

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