我有一个带有一些异步功能的接口.实现该接口的一些类没有任何东西需要等待,有些可能只是抛出.所有警告都有点烦人.
不在异步函数中使用await时.
是否有可能压制消息?
public async Task<object> test()
{
    throw new NotImplementedException();
}
警告CS1998:此异步方法缺少'await'运算符并将同步运行.考虑使用'await'运算符等待非阻塞API调用,或'await Task.Run(...)'在后台线程上执行CPU绑定工作.
我使用在Build2017中引入的Windows Template Studio创建了UWP应用程序.
下面的类是它生成的代码的一部分.
public class SampleModelService
{
    public async Task<IEnumerable<SampleModel>> GetDataAsync()
    {
        await Task.CompletedTask; // <-- what is this for?
        var data = new List<SampleModel>();
        data.Add(new SampleModel
        {
            Title = "Lorem ipsum dolor sit 1",
            Description = "Lorem ipsum dolor sit amet",
            Symbol = Symbol.Globe
        });
        data.Add(new SampleModel
        {
            Title = "Lorem ipsum dolor sit 2",
            Description = "Lorem ipsum dolor sit amet",
            Symbol = Symbol.MusicInfo
        });
        return data;
    }
}
我的问题是,await Task.CompletedTask;代码的目的和原因在这里是什么?它实际上没有Task结果接收器.
有这个控制器文件 SecretAuthController.cs
    public class SecretAuthController : Controller 
    {
          public ActionResult Auth()
          {
               //library method whose signature recently changed to async
              return ProcessTelemetry();
          }        
    }
所以,我的同事将此代码更改为
        public class SecretAuthController : MyBaseController
        {
              public Async Task<ActionResult> Auth()
              {
                   //library method whose signature recently changed to async                  
                   await MyLib.GetTaskDetails(Id);
                   return ProcessTelemetry();
              }        
        }
在此过程中,他们还将所有其他控制器方法签名也更改为使用 1 async。
所以,有些方法看起来像
     public Async Task<ActionResult> ExFooTest()
     {
           //There is no awaitable call here
           //normally returns.
     }
对此有几点疑问:
async是否明智?async,是否需要更改所有操作方法签名,这是一个通用规则吗?(假设他们不等待)c# ×3
.net ×2
async-await ×2
asynchronous ×2
.net-4.5 ×1
asp.net-mvc ×1
c#-5.0 ×1
task ×1
uwp ×1