Мой код продолжает выполняться до того, как все задачи будут выполнены.Задание. После завершения работы до завершения Задачи
Я посмотрел на других людей с аналогичной проблемой, но не вижу ничего очевидного!
static Task MoveAccountAsync(MoverParams moverParams)
{
return Task.Run(() =>
{
Console.WriteLine("Moving {0}", moverParams.Account.Name);
moverParams.Account.Mover.RefreshRoom();
moverParams.Account.Mover.PathfindTo(moverParams.Room);
});
}
static async void MoveAccountsAsync(List<Account> accounts, int room)
{
List<Task> theTasks = new List<Task>();
foreach (Account account in accounts)
{
// Create a new task and add it to the task list
theTasks.Add(MoveAccountAsync(new MoverParams(account, room)));
}
await Task.WhenAll(theTasks);
Console.WriteLine("Finished moving.");
}
Тогда просто назвав его от статического основной:
MoveAccountsAsync(theAccounts, room);
Помощь высоко ценится!
Приветствие, Dave
Вы не можете ждать метода 'async void'. Это огонь и забыть. Всегда используйте «async Task», кроме обработчиков событий. Изнутри 'Main()' use '.Wait()' в результате 'Task'. –