如何修复taskScheduler OnUnobservedException xamarin形式?

时间:2019-05-02 11:31:36

标签: c# xamarin.forms

我正在使用应用程序级taskUnObservedErrorhandler。处理未解决的错误。但是我到处都使用try catch来获取此异常的原因。如何解决这个问题,请指导

AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException; TaskScheduler.UnobservedTaskException += TaskSchedulerOnUnobservedTaskException;

2 个答案:

答案 0 :(得分:0)

here所述。

  

为使开发人员更轻松地基于任务编写异步代码,.NET Framework 4.5更改了未观察到的异常的默认异常行为。尽管未观察到的异常仍会引发UnobservedTaskException异常,但该过程默认情况下不会终止,而是在引发事件后由运行时处理该异常,无论事件处理程序是否观察到该异常都可以配置此行为。从.NET Framework 4.5开始,您可以使用配置元素还原为.NET Framework 4的行为并终止该过程:

 <configuration>   
   <runtime>   
      <ThrowUnobservedTaskExceptions enabled="false"/>
   </runtime>   
</configuration>  

答案 1 :(得分:0)

您的任务之一引发了未处理的异常,这就是为什么它以TaskScheduler_UnobservedTaskException结尾。您要么必须找到引发异常的位置,要么可以默默地忽略它(如果您知道自己在做什么):只需将异常设置为观察到即可。

private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
        {
            e.SetObserved();
            LogException(e.Exception as Exception);
        }

遗憾的是,您无法对CurrentDomainOnUnhandledException执行此操作。当出现异常时,为时已晚,您的应用将被杀死,但至少您有机会记录问题。