Скажем, у меня есть следующий класс:
class SomeClass
{
private TaskCompletionSource<string> _someTask;
public Task<string> WaitForThing()
{
_someTask = new TaskCompletionSource<string>();
return _someTask.Task;
}
//Other code which calls _someTask.SetResult(..);
}
Затем в другом месте я называю
//Some code..
await someClassInstance.WaitForThing();
//Some more code
//Some more code
не будет вызываться до вызова _someTask.SetResult(..)
. Зрительный контекст где-то ждет где-то в памяти.
Однако, скажем, SetResult(..)
никогда не вызывается, а someClassInstance
перестает ссылаться и собирается мусор. Это создает утечку памяти? Или .Net автоматически-волшебным образом знает, что контекст вызова должен быть удален?