在以前的 MonoTouch 版本中,我曾经这样做以忽略未观察到的异常:
TaskScheduler.UnobservedTaskException += delegate(object sender, UnobservedTaskExceptionEventArgs e) {
Console.WriteLine (e);
e.SetObserved ();
};
这是否是一个好的做法是有争议的,但我想知道使用Xamarin.iOS 6.4 现在正式支持的async
/await
关键字来达到相同的效果。
这是我用于测试的代码:
async void OnClick (object sender, EventArgs e)
{
await Task.Run (() => { throw new Exception (); });
}
当我运行它时,调试器暂停AsyncVoidMethodBuilder
:
我读到 .NET 4.5 应该改变了行为,因此未观察到的异常不会使应用程序崩溃——但是如果将异常发布到我无法处理的 UIKit 同步上下文中,这将无济于事。
有没有办法忽略await
MonoTouch 中未观察到的异常?