我正在使用C#在Windows 8上工作,使用async关键字时,存在一种情况,我似乎无法很好地处理异常。
该情况涉及启动一个async
Lambda,并将其发布以在UI线程上运行。
在Lambda代码执行期间发生的异常会在调用线程上重新抛出,而没有能力正确地捕获它们。
例如:此代码块在某个工作线程上执行,并尝试在UI线程上安排工作:
await Window.Current.Dispatcher.RunAsync
(CoreDispatcherPriority.Normal
, async () =>
{
var result = await CurrentAppSimulator
.RequestProductPurchaseAsync("product, true);
}
);
如果lambda表达式中的代码抛出异常,该异常不会被重新提交到此方法的主体。相反,它将由SynchronizationContext或某些类似机制引发,我似乎无法捕获它。
我想要的是从这段代码(调用代码)中捕获此异常的能力。
这是否可能?