10

如果我有一个像这样的异步方法体 -

public async Task GetSomething() {

    await SendText("hi");
    await SendImage("bla.bmp");

}

当等待启动时​​,如何在将 Task 对象返回给用户之前获取它

IE..

public async Task GetSomething() {

    myTasks.Add(Task.Current);
    await SendText("hi");
    await SendImage("bla.bmp");

    //some processing

}

这样我就可以在其他地方做

 await Task.WhenAll(myTasks);
 Console.WriteLine("All tasks complete");

这样我就可以在关闭之前等待所有任务完成

4

1 回答 1

9

这不是直接可能的,因为该语言没有访问“当前”任务的工具。

不过有一个解决方法:将您的异步方法包装在另一个方法中。一旦异步方法返回(大约在第一个等待点发生),这种其他方法就可以获取任务。

在所有情况下,我都建议让调用者将异步任务添加到您的列表中,而不是异步方法本身。即使从封装的角度来看,这也是有用的。

于 2013-01-13T11:55:44.027 回答