设置异步方法



我有一个C#函数,目前看起来像这样:

public void Execute()
{
  // Query Database
  // Process records.
}
...
myObject.Execute();

现在,我想将此代码迁移到异步,因为它通过 SqlCommand 访问数据库。为了做到这一点,我写了以下内容:

public async void Execute() 
{
  // Query Database
  // Process records.
}
...
await myObject.Execute();

然而,在对此进行了更多研究之后,每个人都说"避免async void!它会让你的系统崩溃。好的,但是在我的情况下,还有什么选择?会不会是

public async Task Execute()
{
  // Query Database
  // Process records.
  return null;
}
...
await myObject.Execute();

在我的方法不返回任何内容的情况下如何使用async(它可能会抛出Exception)。

方法的返回类型应Task,但async方法的主体中不应有return语句。 仅当您返回Task<T>并且任务本身将具有结果时,该方法才应使用 return

Task没有结果的任务(但指示何时完成并传播异常),因此 void 方法(即没有结果的方法(但指示何时完成并传播异常)是异步对应项。

最新更新