【发布时间】:2018-08-28 09:22:38
【问题描述】:
代码示例
public async Task HeavyTask()
{
using(var res = new BigResource())
{
await Task.Run(() => service.Do(res));
}
}
我有一些类似于上面的代码,ReSharper 在使用 res 实例时警告我“访问已处置的闭包”。
如果我不使用await 关键字,我知道res 实例可能在service 尝试访问它时被释放。
但我认为如果我使用await 关键字,执行HeavyTask 方法的线程将在Task.Run 完成之前不会继续,并且应该没有访问已处置闭包的风险。
请帮助我了解我哪里出错了,以及解决此问题的首选模式是什么。
【问题讨论】:
标签: c# async-await resharper