14

Visual Studio 2012 で新しい Async/Await パターンを使用して非同期呼び出しを実装しようとしています。(フォーム デザイナーを使用して) フォームをセットアップし、非同期メソッドをイベント ハンドラーとして使用しようとすると、コンパイラーは、関数は void を返しません。

このメソッドは Task を返すはずです。それが要点です。これが通常のイベント ハンドラーではないことをフォーム デザイナーに伝える方法がわかりません。誰かがこの問題に遭遇しましたか? Rapid Development のフォーム デザイナーの使用をやめるべきですか?

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 に答える