C# 任务';未通过等待任务或访问其exception属性观察到的异常

C# 任务';未通过等待任务或访问其exception属性观察到的异常,c#,wpf,exception,error-handling,task,C#,Wpf,Exception,Error Handling,Task,这些是我的任务。我应该如何修改它们以防止此错误。我检查了其他类似的线程,但我正在使用等待并继续。那么这个错误是怎么发生的呢 通过等待任务或访问其exception属性,未观察到任务的异常。结果,未观察到的异常被终结器线程重新抛出 你没有处理任何异常 更改此行: InsertMainLinks.Wait(); 致: 一般情况下:为了防止终结器重新抛出源自工作线程的任何未处理异常,您可以: 等待线程并捕获System.AggregateException,或者只读取exception属性 例如:

这些是我的任务。我应该如何修改它们以防止此错误。我检查了其他类似的线程,但我正在使用等待并继续。那么这个错误是怎么发生的呢

通过等待任务或访问其exception属性,未观察到任务的异常。结果,未观察到的异常被终结器线程重新抛出


你没有处理任何异常

更改此行:

InsertMainLinks.Wait();
致:

一般情况下:为了防止终结器重新抛出源自工作线程的任何未处理异常,您可以:

等待线程并捕获System.AggregateException,或者只读取exception属性

例如:


嗯,没什么明显的问题。您是否尝试过在调试器中运行,以查看是否可以确定哪个任务被泄漏?(顺便说一句,这里有一些奇怪的编码约定:您对本地变量使用
PascalCase
,对方法使用
camelCase
,这与通常的.NET约定相反。)谢谢您的回答。那么代码中可能还有其他错误。我将检查:)如果在任务执行时引发未处理的异常,则可能会出现此错误。您是否尝试过将对ReturnLinks和insertLinksDatabase的调用封装在try/catch块中?谢谢您的回答Josh。我认为在那里发生的意外错误不应该使应用程序崩溃,因为它们也在另一个任务中被调用。应该处理它们,因为它们在另一个任务中被调用,并通过ContinueWith处理。现在我正在尝试别的东西。如果错误再次发生,我将尝试你的建议。
InsertMainLinks.Wait();
try { 
    InsertMainLinks.Wait(); 
}
catch (AggregateException ae) { 
    /* Do what you will */ 
}
Task.Factory.StartNew((s) => {      
    throw new Exception("ooga booga");  
}, TaskCreationOptions.None).ContinueWith((Task previous) => {  
    var e=previous.Exception;
    // Do what you will with non-null exception
});
Task.Factory.StartNew((s) => {      
    throw new Exception("ooga booga");  
}, TaskCreationOptions.None).ContinueWith((Task previous) => {      
    try {
        previous.Wait();
    }
    catch (System.AggregateException ae) {
        // Do what you will
    }
});