Пример кода
public async Task HeavyTask()
{
using(var res = new BigResource())
{
await Task.Run(() => service.Do(res));
}
}
У меня есть код, похожий на приведенный выше, и ReSharper предупреждает меня о «Доступе к закрытому закрытию» при использовании экземпляра res
.
Если бы я не использовал ключевое слово await
, я знаю, что res
экземпляр может быть удален , когда service
пытается получить к нему доступ.
Но я думаю, что если я использую ключевое слово await
, поток, который выполняет метод HeavyTask
, не будет продолжаться до тех пор, пока не будет завершен Task.Run
, и не должно быть никакого риска доступа к удаленному закрытию.
Пожалуйста, помогите мне понять, где я ошибся, и какой способ решения этой проблемы предпочтителен.