小编典典

抑制“警告 CS4014:因为不等待此调用,当前方法的执行继续......”

all

这不是“如何在没有等待的情况下在 C#
中安全调用异步方法”
的副本。

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

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

一个简单的例子:

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.0discards的答案,因为我认为ContinueWith这里不合适。每当我需要记录即发即弃操作的异常时,我都会使用Stephen
Cleary 在此处提出的更精细的方法。

使用 C# 7,您现在可以使用discards

_ = WorkAsync();

阅读 95

收藏
2022-07-13

共1个答案

小编典典

使用 C# 7,您现在可以使用discards

_ = WorkAsync();
2022-07-13