3

このような非同期メソッドがあります

public async void Method()
{
    await // Long run method
}

このメソッドを呼び出すときに、このメソッドが完了したときにイベントを発生させることができますか?

public void CallMethod()
{
    Method();
    // Here I need an event once the Method() finished its process and returned.
} 
4

1 に答える 1

8

なぜそれが必要なのですか?完了するのを待つ必要がありますか?これは次のように機能します。

public async Task Method() //returns Task
{
    await // Long run method
}

public void CallMethod()
{
    var task = Method();

    //here you can set up an "event handler" for the task completion
    task.ContinueWith(...);

    await task; //or await directly
} 

awaitを使用できず、実際にイベントのようなパターンを使用する必要がある場合は、を使用してContinueWithください。これは、タスクを完了するためのイベントハンドラーを追加することと考えることができます。

于 2012-12-05T18:12:37.303 に答える