すべてのタスクが完了する前に、自分のコードが実行され続けています。タスク。タスクが完了する前にすべて終了する
私は、同様の問題を抱えている他の人を見てきましたが、何も目に見えません。
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);
ヘルプははるかに高く評価!
乾杯、 デイブ
'async void'メソッドを待つことはできません。それは火と忘れです。イベントハンドラを除いて、常に 'async Task'を代わりに使用してください。 'Main()'の中から結果の 'Task'に' .Wait() 'を使います。 –