14

我正在尝试在 Visual Studio 2012 中使用新的 Async/Await 模式实现异步调用。当我设置我的表单(使用表单设计器)然后尝试使用异步方法作为事件处理程序时,编译器抱怨函数不返回 void。

该方法应该返回一个任务;这就是重点。我不知道如何告诉表单设计者这不是一个常规的事件处理程序。有没有人遇到过这个问题?我应该放弃使用表单设计器进行快速开发吗?

4

1 回答 1

33

您必须使用async void事件处理程序的方法,而不是async Task. 能够将事件处理程序连接到异步方法async void是允许的全部原因。

例如,如果你想使用一个按钮点击处理程序,你可以这样写:

private async void button_Click(object sender, EventArgs e)
{
     bool success = await CallSomeMethodAsync();
     if (success)
     {
          // Do something here, etc...
     }
}
于 2012-12-17T21:27:41.297 回答