【发布时间】:2022-01-17 11:28:50
【问题描述】:
我正在实现一个 Windows 服务,我不想在 ExecuteAsync 方法中写任何东西。但是当我像下面这样保持它时,它会显示一个警告。
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
}
警告
警告 CS1998 此异步方法缺少“等待”运算符,将运行 同步。考虑使用 'await' 运算符来等待 非阻塞 API 调用,或 'await Task.Run(...)' 来做 CPU 密集型工作 在后台线程上。
如果我删除 async 它会开始报错
并非所有代码路径都返回值
那么,让ExecuteAsync 什么都不做而没有任何错误和警告的最佳方法是什么。
目标框架: .Net5
【问题讨论】:
-
可以使用 --> await Task.CompletedTask;
-
@AvanthaSiriwardana 你能解释一下为什么它会起作用吗?
-
由于您不从该方法返回,因此当您需要返回已完成的虚拟任务(不返回值/结果)时,Task.CompletedTask 很重要。请参考:odetocode.com/blogs/scott/archive/2018/01/18/…
标签: c# .net .net-core windows-services .net-5