我正在实现一个windows服务,我不想在ExecuteAsync
方法中写任何东西。但当我把它像下面这样保存时,它显示了一个警告。
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
}
警告
警告CS1998此异步方法缺少"等待"运算符,将运行同步地。考虑使用"await"运算符进行等待非阻塞API调用,或"等待任务.运行(…("以执行CPUbound工作在后台线程上。
如果我删除async
,它开始给出错误
并非所有代码路径都返回值
那么,让ExecuteAsync
在没有任何错误和警告的情况下什么是最好的方法。
目标框架:.Net5
删除async
并返回Task.CompletedTask
。当方法中不需要await
时,请移除async
。生成的代码将减少开销(使用async,方法被拆分为一个状态机(
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
return Task.CompletedTask;
}
或更短:
protected override Task ExecuteAsync(CancellationToken stoppingToken) =>
Task.CompletedTask;