设置异步方法

Setting up an async method

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

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

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

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

然而,在进一步研究之后,每个人都说 "avoid async void! it will crash your system." 好吧,但我的情况还有什么选择呢?会不会

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

如果我的方法没有 return 任何东西(它可能会抛出 Exception),我该如何使用 async

方法的 return 类型应该是 Taskasync 方法的主体中不应有 return 语句。如果您正在 returning a Task<T> 并且任务本身会有结果,则该方法应该只使用 return

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