C# 正在等待多个异步进程完成

C# 正在等待多个异步进程完成,c#,asynchronous,uwp,wait,C#,Asynchronous,Uwp,Wait,我希望执行一组操作,这些操作涉及将不同的异步进程写入单个文件,一旦写入完成,另一个等待写入完成的异步进程将执行将相同文件上载到不同服务的操作。所有操作返回void 以下是我正在尝试的方法 API层 private static async Task writeToFile(string data){ ... await FileIO.AppendTextAsync(myFile, data); } private static async Task sendFile(string

我希望执行一组操作,这些操作涉及将不同的异步进程写入单个文件,一旦写入完成,另一个等待写入完成的异步进程将执行将相同文件上载到不同服务的操作。所有操作返回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)等待所有数据写入完成吗


谢谢。

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

var task1 = WriteFile(...);
var task2 = WriteFile(...);
var task3 = WriteFile(...);
var task4 = WriteFile(...);
await Task.WhenAll(task1, task2, task3, task4);
然后调用您的SendFile,并使用wait等待结果

await SendFile(...);

目前发生了什么?它有用吗?你说“它无法正确发送文件”-这到底是什么意思?
writeToFile
sendFile
是如何相对编排的?一个代码路径是否调用
await writeToFile(…);等待发送文件(…)?或者…?sendFile在我第一次调用writeFile后立即被调用,因为它本质上是异步的。在调用sendFile之前,我如何为所有先前的writeFile调用创建一个等待。Marc,感谢您的快速响应。这些是从我的UWP应用程序调用的API实现。该API已在一个单例中实现,该单例将外部API公开为obj.Write(data)和obj.Send(),后者在内部调用上述方法“如何在调用sendFile之前创建对所有先前writeFile调用的等待?”-通过调用
wait
,针对每个?可能重复的感谢回复。在我的场景中,我不确定任务将被调用多少次。原因是最终用户可能会多次调用API,而API将依次调用您提到的task1、task2等任务。。。示例:obj.callWriteFile();//此inturn调用API WriteFile obj.callWriteFile();callWriteFile();obj.callSend();所以您必须知道有多少API首先从用户调用来发送文件,例如设置超时来包装所有WriteFile请求,然后调用SendFile。