小编Jas*_*der的帖子

当第三方库使用它时,async void可以解决

搜索后寻求帮助并未提出好的建议.

我总是避免在代码中使用异步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方法中,以保护我的代码免于死亡吗?

c# async-await

5
推荐指数
1
解决办法
87
查看次数

标签 统计

async-await ×1

c# ×1