答案 0 :(得分:5)
方法OpenRelatedView()
似乎是从非UI线程调用的,因为你在那里使用InvokeOnMainThread()
。所以我的假设是你在某个地方使用Task.Run()
来调用它。所有异步代码都将隐式包装到try-catch中。
此异常必须由您捕获并处理。每个Task
对象都有Exception
property,其中包含异步执行期间发生的所有异常。如果您正确使用await
,则会解开这些例外情况。您的方法具有void
返回类型,因此无法等待。因此,除非事情得到解决,否则该例外将不会被发现。在某些平台上(例如Windows Phone),你永远不会注意到出现了问题。
但是,使用Xamarin.iOS,在应用程序根级别存在所有未捕获异常的处理程序,这就是为什么您会在那里看到异常的原因。
Steven Clery对任务和异步编码有很多好articles。