[解決済み】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.Wait
と
await task
?
あなたはレストランでウェイターにランチを注文します。注文を伝えてしばらくすると、友人が入ってきてあなたの隣に座り、会話を始めます。ここで、あなたには2つの選択肢があります。タスクが完了するまで、その友人を無視することができます。つまり、スープが届くまで待ち、その間は何もしないことができます。あるいは、その友人の話に応え、その友人が話をやめたら、ウェイターがスープを持ってくる。
Task.Wait
はタスクが完了するまでブロックする -- タスクが完了するまでは、友人を無視する。
await
はメッセージキューのメッセージを処理し続け、タスクが完了すると、"pick up where you left off after that await"というメッセージを待ち受けにするのです。あなたは友人と話し、会話が途切れたときにスープが届きます。
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] キーワード「ref」と「out」の違いは何ですか?
-
[解決済み] C#でawaitを使わずに非同期メソッドを安全に呼び出す方法
-
[解決済み】非同期プログラミングとマルチスレッドの違いは何ですか?
-
[解決済み】非同期処理の待ち時間、Wait()でプログラムがフリーズする原因はここにある
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み] プロミス型タスクでStartを呼び出してはいけない。