gpt4 book ai didi

c# - 如何防止 "consider applying ' await' operator...“某些功能的警告?

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:23 25 4
gpt4 key购买 nike

如果我有一个可以被等待但通常不会被等待的方法,当它不是时,我如何防止对该方法发出警告?附加#pragmas在每个调用站点进行抑制更令人讨厌,我不想全局禁用警告,因为很多 Task确实应该等待返回函数;它只是我想说的一小部分,“即使它可以,这个函数也不期望是 awaited ,所以如果在没有 await 的情况下调用它,请不要发出警告”。

最佳答案

您似乎想要解雇并忘记某些任务。

我写了一个扩展方法,如:

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);
}
}

现在您可以通过以下方式将任务标记为即发即弃

task.FireAndForget();

并且编译器不会提示,因为没有等待任务,并且不会出现看似无处不在的 UnobservedTaskException,因为只要 GC 的终结器线程决定释放任务,它们就会被重新抛出,使它们看起来有些不稳定。

关于c# - 如何防止 "consider applying ' await' operator...“某些功能的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52031072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com