与.Result一起使用async方法时捕获异常

时间:2017-02-16 00:24:44

标签: c# async-await

通常,当我在异步调用中使用await时,会正确捕获异常:

try {
   return await DoSomethingAsync();
} catch (Exception ex) {
   // Exception is captured here
}

上述代码的唯一要求是方法必须是异步

但是,我有一个方法不能像委托一样异步,因此我不能使用await。使用.Result使我的catch块永远不会捕获任何东西。

try {
   return DoSomethingAsync().Result;
} catch (Exception ex) {
   // This block never gets called
}

使用.Result时有没有办法捕获异常?或者我应该尝试不同的方法?

编辑1:方法正文DoSomethingAsync

public async Task<string> DoSomethingAync() {
   return await CallAThirdPartyLibrary();
}

编辑2:方法DoSomethingAsync的调用者

Bind<Foo>()
   .ToFactory(c => new FooBar(CallMyMethodThatIsNotAsyncAndIsUsingDotResult()))
   .PerRequest();

如何让来电者使用await以便我可以摆脱.Result

0 个答案:

没有答案