如果我有一个可以等待 的方法,但通常不是,我该如何防止不存在该方法的警告?在每个调用站点上附加#pragmas
来抑制,这更加令人讨厌,并且我不想全局禁用警告,因为确实应该等待许多Task
返回函数;它只是我想说的一小部分子集,“即使可以,但此函数不会期望为awaited
,因此请不要警告是否在没有await
的情况下调用它”。>
答案 0 :(得分:0)
您似乎想开除并忘记某些任务。
我写了一个扩展方法,如:
root
现在,您可以通过
将任务标记为“一劳永逸”public static class TaskExtensions
{
public void FireAndForget(this Task task)
{
// access exception (and ideally log it) to avoid a potential exception being rethrown by the finalizer as an unobserved exception
task.ContinueWith(t => Debug.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);
}
}
并且编译器不会抱怨,因为没有等待任务,并且似乎不会发生UnobservedTaskException异常,因为只要GC的终结器线程决定释放任务,它们就会被重新抛出,从而使它们看起来有些不稳定。