等待多个异步进程完成

时间:2018-01-18 09:31:34

标签: c# asynchronous uwp wait

我想执行一组涉及不同异步进程写入单个文件的操作,一旦写入完成,另一个等待写入完成的异步进程会执行将同一文件上载到不同服务的过程。所有操作都返回void。

以下是我正在尝试的方法

API图层

private static async Task writeToFile(string data){
...
     await FileIO.AppendTextAsync(myFile, data);

}

private static async Task sendFile(string data){
     ...
     var properties = await FileIO.GetPropertiesAsync(myFile, data);
     if(properties.Size > = 0){
       await FileProcessor.sendFile(myFile);
     }
    ....
}

在我的应用中,我多次调用 WriteFile 方法,然后执行 SendFile 操作。由于处理异步任务的方法本质上存在问题,因此在执行第一个WriteToFile后,它会立即执行发送。但我喜欢让sendFile等到我的所有WriteFile调用都完成。

有人建议我(或纠正我)使用如何使这些异步任务(sendFile)等待所有数据写入完成的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

首先将每个 WriteFile 方法定义为任务并设置为变量:

var task1 = WriteFile(...);
var task2 = WriteFile(...);
var task3 = WriteFile(...);
var task4 = WriteFile(...);
await Task.WhenAll(task1, task2, task3, task4);

然后调用 SendFile 并使用等待结果。

await SendFile(...);