C#5异步方法完成事件。

时间:2012-12-05 17:49:49

标签: c# asynchronous .net-4.5 async-await c#-5.0

我有一个像这样的异步方法

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.
} 

1 个答案:

答案 0 :(得分: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。您可以将其视为为任务完成添加事件处理程序。