个人随笔
技术改变世界

WPF 多线程异常抛送到UI线程

无论是winform还是WPF,在.NET 2.0之后 只要是多线程中产生了异常都会导致程序强制结束。

那么我们一般的做法是将未知的多线程的异常抛送到UI线程去,然后进行处理..

 

正确的多线程中的异常抛送代码示例

try
{
    //一些有趣的代码..
}
catch(Exception ex)
{
    Application.Current.Dispatcher.Invoke(DispatcherPriority.Send, (DispatcherOperationCallback)delegate(object arg)
    {
        throw ex;
    }, null);
}

这里的委托指定了委托的类型 DispatcherPriority.Send ,根据MSDN的解释是最高优先级,在异常发生后立刻处理。

如果你直接编写委托的话,也许你无法将异常抛送到UI线程,该程序就已经结束了。

转载请注明出处王旭博客 » WPF 多线程异常抛送到UI线程

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址