小编cwi*_*lls的帖子

.NET 4.5 Async + Await Fire and Forget 潜在的内存泄漏?

我在 ASP.NET 中使用与下面类似的代码进行非关键的即发即弃操作

private void SomeMethod()
{
    FireAndForgetAsync();
}

private async Task FireAndForgetAsync()
{
    // Simulate medium running IO blocking operation
    await Task.Delay(sleepTime).ConfigureAwait(false);

    // Simulating the rare scenario where an error occurs
    throw new Exception("An Error Occurred");
}
Run Code Online (Sandbox Code Playgroud)

该异常是在从异步方法返回的任务中捕获的,这可以防止未处理的异常完全导致应用程序崩溃。

但是这段代码会导致内存泄漏吗?因为返回的任务(及其异常)没有被分配/访问?我的想法是,除非某些 .NET 框架代码持有对该任务的引用,否则它只会被垃圾收集。

.net c# memory-leaks asynchronous async-await

6
推荐指数
1
解决办法
4314
查看次数

标签 统计

.net ×1

async-await ×1

asynchronous ×1

c# ×1

memory-leaks ×1