3 回答

TA貢獻1802條經驗 獲得超5個贊
通常這就是等待所有任務異步完成的方式:
await?Task.WhenAll(myArrayOfTasks);
要在內部等待,Task.Run
只需傳遞異步委托(一些讀取):
Task.Run(async?()?=> {????await?Task.Delay(1000); });
另外,了解為什么在實踐中要避免Task.Run
:Task.Run Etiquette 和正確用法以及更多示例也會很有幫助。簡而言之,您不應該用 包裝阻塞 APITask.Run
,這是沒有意義的,因為底層線程無論如何都會被阻塞。對于非阻塞 API 來說,一個好的設計是 return?Task
,因此您無論如何都不需要運行新的 API。

TA貢獻1995條經驗 獲得超2個贊
你需要這樣做:
static async Task Main(string[] args)
{
var tasks = new[]
{
Task.Run(() =>
{
// Need to be awaited
var writer = WritingDatabase();
}),
Task.Run(() =>
{
// Need to be awaited as well
var reader = ReadingDatabase();
})
};
await Task.WhenAll(tasks);
}

TA貢獻2051條經驗 獲得超10個贊
由于您已經擁有Task返回 API,因此您可以執行以下操作:
static async Task Main(string[]args)
{
await Task.WhenAll(WritingDatabase, ReadingDatabase);
}
- 3 回答
- 0 關注
- 150 瀏覽
添加回答
舉報