可以从代码中的多个位置调用 TestAwaitTaskArrayAsync()。我需要锁定 taskArray 的执行并异步等待,直到其所有任务完成,然后下一次调用将开始执行 taskArray。这是代码:
private async Task TestAwaitTaskArrayAsync()
{
Task[] taskArray;
lock (_lock_taskArray)
{
taskArray = new Task[]
{
Task.Run(() =>
{
SomeMethod1();
}),
Task.Run(() =>
{
SomeMethod2();
})
};
}
await Task.WhenAll(taskArray);
}
不允许锁定等待,因此我可以在必要时使用AsyncLock ,但尽量保持简单。此代码是否正确且线程安全?我不确定是否等待 Task.WhenAll(taskArray); 可以在锁定之外,我应该使用 AsyncLock 代替吗?