搜索后寻求帮助并未提出好的建议.
我总是避免在代码中使用异步void方法.我不使用事件处理程序.有时,供应商或库无法选择,其方法实现为async void.
如果我的方法本身返回Task,但我别无选择,只能使用async void调用第三方库方法,是否有办法安全地包装他们的方法,以便我可以保持我的代码不受异步void的影响,这里列出的关于终止我的过程?
StackOverflow - 为什么async void bad
我关注的一个例子如下:第三方库方法如下所示
public async void GetSomethingFromAService()
{
/// their implementation, and somewhere along the way it throws an exception, in this async void method --- yuck for me
}
Run Code Online (Sandbox Code Playgroud)
我的方法在服务控制器上说:
public async Task<bool> MyMethod()
{
await ThirdPartyLibrary.GetSomethingFromAService();
return await Task.FromResult(true);
}
Run Code Online (Sandbox Code Playgroud)
我的方法很好,除了第三方库是异步void并抛出异常.我的应用程序即将死亡.我不希望它,因为我的代码编写得很好而不是异步void.但我无法控制他们的代码.我可以用这种方式将调用包装到异步void方法中,以保护我的代码免于死亡吗?