WPF从工作线程引发异常,但是否继续
我有一个场景,工作线程执行的任务WPF从工作线程引发异常,但是否继续,wpf,Wpf,我有一个场景,工作线程执行的任务 try { for() { functionA(); functionB(); } } catch(Exception ex) { throw new Exception("Message"); } 我基本上是重新抛出异常,这样当工作线程完成时,UI线程将收到异常。 现在,如果在function中发生异常,我想抛出异常,但继续循环,而不是停止。我怎样才能做到这一点 编辑:如果不清
try
{
for()
{
functionA();
functionB();
}
}
catch(Exception ex)
{
throw new Exception("Message");
}
我基本上是重新抛出异常,这样当工作线程完成时,UI线程将收到异常。
现在,如果在function
中发生异常,我想抛出异常,但继续循环,而不是停止。我怎样才能做到这一点
编辑:如果不清楚,则可以通知UI发生异常,但不会停止工作进程,如下所示:
List<Exception> errorsLog = new List<Exception>();
for()
{
try
{
functionA();
}
catch(Exception e) {
errorsLog.Add(e);
}
try
{
functionB();
}
catch(Exception e) {
errorsLog.Add(e);
}
}
if (errorsLog.Count > 0) {
throw new AggregateException(errorsLog);
}
List errorsLog=new List();
for()
{
尝试
{
functional();
}
捕获(例外e){
错误代码添加(e);
}
尝试
{
函数b();
}
捕获(例外e){
错误代码添加(e);
}
}
如果(errorsLog.Count>0){
抛出新的AggregateException(errorsLog);
}
其中,
aggregateeexception
是包含其他异常列表的自定义异常。但functionB
至关重要。如果functionB
引发异常,我必须退出。此外,必须立即通知UI Function中发生了错误,而不是在所有异常都完成之后。在这种情况下,不要将异常添加到列表中,只需使用dispatcher在UI线程中重新抛出它们:Application.Current.dispatcher.BeginInvoke(新操作(()=>throw MyAsyncException(e)))。工作线程正在另一个项目上运行。Application.Current.Dispatcher在上下文中没有意义:(那么您应该创建类似IExeptionReportingService的内容。此接口将位于某个公共程序集中,并且实现将位于了解Application.Current.Dispatcher的UI程序集中。