设置异步方法

时间:2015-01-08 20:00:55

标签: c# asynchronous

我有一个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

1 个答案:

答案 0 :(得分:1)

方法的返回类型应为Task,但return方法的正文中不应有async个语句。如果您要返回return,则该方法应仅使用Task<T>,并且任务本身会产生结果。

Task是一个没有结果的任务(但表示它完成并传播异常的时间)以及一个void方法,这是一个没有结果(但表示完成和传播异常的时间)是异步对应物。