私は非同期プログラミングの初心者で、何ができるのかを知るためのテストコードを書こうとしています。すべての非同期/待機が完了したことを知る方法?
私のテストコンソールのアプリケーションコードです。非同期メソッドを呼び出し、既存の.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;
}
それは、これまでに動作しますが、1つの問題は、 "エンド" です。コンソールウィンドウで「Job Start:」の直後に印刷され、その後は出力を待っています。
私の質問は次のとおりです。
1.すべての非同期/待機が終了した後、「終了」メッセージを印刷するにはどうすればよいですか?
2.それがベストプラクティスなのかどうかわからないので、既存のコードへの提案はありますか?
ありがとうございます。
それは私のために働く、ありがとう。 – blk25t
@ blk25tあなたは答えを受け入れてください。 –