我是新來的異步編程,並試圖編寫一些測試代碼,看看我能用它做些什麼。如何知道所有的異步/等待完成?
下面是我的測試控制檯應用程序代碼,調用一個異步方法,它會將一些現有的.docx文件發佈到我的web api並轉換爲pdf。
static void Main(string[] args)
{
//async testing - 5 files batch
Console.WriteLine("Job Start:");
for (int i = 0; i < 5; i++)
{
var filestream = File.Open(@"c:\pdftest\" + i.ToString() [email protected]".docx", FileMode.Open);
//delegate
Action act = async() =>
{
await test(filestream, i.ToString());
filestream.Dispose();
};
act();
}
Console.WriteLine("End.");
Console.ReadLine();
}
和方法:
static async Task<int> test(FileStream fs, string id)
{
var content = new StreamContent(fs);
var client = new HttpClient();
var startTime = DateTime.Now;
//post to web api
var response = await client.PostAsync("http://localhost:50348/PDFConvert/Convert?name=" + id, content);
var ts = DateTime.Now - startTime;
Console.WriteLine("Time Cost: " + ts.TotalSeconds.ToString() + " seconds, " + response.Content.ReadAsStringAsync().Result.Replace("\"", ""));
client.Dispose();
return 0;
}
它的工作原理,到目前爲止,但一個問題是 「結束」。在控制檯窗口的「Job Start:」後面打印,然後等待輸出。
所以我的問題是:
1.如何在所有異步/等待完成後打印「結束」消息?
2.不確定這是否是最佳做法,因此對現有代碼的任何建議?
非常感謝。
它適合我,謝謝。 – blk25t
@ blk25t那麼你應該標記接受的答案。 –