一尘不染

禁止显示“警告CS4014:由于未等待此调用,因此将继续执行当前方法…”

c#

这不是“如何在不等待的情况下安全地在C#中调用异步方法”的重复。

如何很好地抑制以下警告?

警告CS4014:由于未等待此调用,因此在调用完成之前将继续执行当前方法。考虑将“ await”运算符应用于调用结果。

一个简单的例子:

static async Task WorkAsync()
{
    await Task.Delay(1000);
    Console.WriteLine("Done!");
}

static async Task StartWorkAsync()
{
    WorkAsync(); // I want fire-and-forget

    // more unrelated async/await stuff here, e.g.:
    // ...
    await Task.Delay(2000); 
}

我尝试过但不喜欢的内容:

static async Task StartWorkAsync()
{
    #pragma warning disable 4014
    WorkAsync(); // I want fire-and-forget here
    #pragma warning restore 4014
    // ...
}

static async Task StartWorkAsync()
{
    var ignoreMe = WorkAsync(); // I want fire-and-forget here
    // ...
}

更新了
,因为已经编辑了原始接受的答案,所以我已将接受的答案更改为使用C#7.0丢弃的答案,因为我认为ContinueWith这里不合适。每当我需要记录即发即弃操作的异常时,我都会使用Stephen
Cleary在此提出
的更为复杂的方法。


阅读 1572

收藏
2020-05-19

共1个答案

一尘不染

使用C#7,您现在可以使用丢弃

_ = WorkAsync();
2020-05-19