这不是“如何在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
在这里不合适。每当我需要记录“即发即弃”操作的异常时,我都会使用一种更精细的方法,由斯蒂芬·克利里提出。。