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 回答