1. ホーム
  2. c#

[解決済み】Task.Start/WaitとAsync/Awaitの違いは何ですか?

2022-04-16 08:59:50

質問

何か見落としているかもしれませんが、doingの違いは何ですか?

public void MyMethod()
{
  Task t = Task.Factory.StartNew(DoSomethingThatTakesTime);
  t.Wait();
  UpdateLabelToSayItsComplete();
}

public async void MyMethod()
{
  var result = Task.Factory.StartNew(DoSomethingThatTakesTime);
  await result;
  UpdateLabelToSayItsComplete();
}

private void DoSomethingThatTakesTime()
{
  Thread.Sleep(10000);
}

解決方法は?

<ブロッククオート

何か見逃しているかもしれない

あなたは

<ブロッククオート

とはどう違うのでしょうか? Task.Waitawait task ?

あなたはレストランでウェイターにランチを注文します。注文を伝えてしばらくすると、友人が入ってきてあなたの隣に座り、会話を始めます。ここで、あなたには2つの選択肢があります。タスクが完了するまで、その友人を無視することができます。つまり、スープが届くまで待ち、その間は何もしないことができます。あるいは、その友人の話に応え、その友人が話をやめたら、ウェイターがスープを持ってくる。

Task.Wait はタスクが完了するまでブロックする -- タスクが完了するまでは、友人を無視する。 await はメッセージキューのメッセージを処理し続け、タスクが完了すると、"pick up where you left off after that await"というメッセージを待ち受けにするのです。あなたは友人と話し、会話が途切れたときにスープが届きます。