假设您有一个 Web 处理程序调用这样的异步方法:
var foo = await SomeMethod();
而且,由于编码不当(没有 CancellationToken、没有超时等),SomeMethod
永远不会完成。沮丧的用户反过来在她的浏览器上按下“停止”并前往酒吧。
假设这种情况发生在很多用户身上。
我知道我可以写一个超时来防止它永远等待,但如果我不这样做......会发生什么?这是内存泄漏吗?最终会被清理干净吗?最坏的情况是什么?
最佳答案
And SomeMethod never returns. The user cancels the request and goes to the pub.
它们根本不是一回事。
如果 SomeMethod
永远不会完成,那么你就有了内存泄漏。 You should never, ever, ever write code that does this.
OTOH,如果用户取消请求(取消 CancellationToken
),则方法将完成,可能会出现 OperationCanceledException
。
关于c# - .NET 4.5 中不完整的异步任务有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21059269/