Я новичок в асинхронном программировании и пытаюсь написать некоторый тестовый код, чтобы посмотреть, что я могу с ним сделать.Как узнать, что все async/await завершены?
ниже - это код приложения для тестового консольного приложения, вызывающий метод async, который отправит некоторый существующий файл .docx на мой веб-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;
}
Он работает до сих пор, но одна проблема заключается в "End". напечатанный сразу после «Job Start:» в окне консоли, а затем ожидающие выходы.
Так что мой вопрос:
1. Как распечатать сообщение «Закончить» после завершения async/wait?
2. Не уверен, что это лучшая практика, поэтому любое предложение для существующего кода?
Большое спасибо.
Это работает для меня, спасибо. – blk25t
@ blk25t, тогда вы должны отметить принятый ответ. –