async / awaitでasyncメソッドとTaskSchedulerを呼び出す

ボリス

次のコードを検討してください

async Task<int> foo()
{
    await Task.Delay(1000);
    return 42; 
}

...
// OPTION 1

Task t = Task.Factory.StartNew(foo,
            CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);

t.Wait();


...
// OPTION 2
Task t = foo();
t.Wait()

質問

  1. 2つの呼び出しオプションの実質的な違いは何ですか?

  2. オプション1で。デフォルトのTaskSchedulerをオーバーライドするとします。fooメソッドで待機する場合-どのTaskSchedulerが使用されますか?デフォルトを使用しますか、それとも親タスクにパラメーターで渡されたものを使用しますか?

リードコプシー

ただし、一般的に、「オプション1」は、への呼び出しをラップする新しいタスク作成foo()、効果的にを作成しTask<Task<int>>ます。それを呼び出すと.Wait()、内部タスクがほぼ即座に(Task.Delayがヒットするとすぐに戻るため、内部タスクが完了するのを待つことはありません

デフォルト以外の使用に関する質問についてTaskSchedulerは、カスタムスケジューラがタスクを開始するまでブロックされる可能性があるという事実を除いて、通常、動作は変更されません。問題のスケジューラに関する詳細情報がなければ、何が起こるかを正確に知ることは不可能です。

ただし、2番目のオプションは、タスクを開始するため、遅延が完了するまでブロックし、遅延が完了するまでブロックします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

awaitキーワードなしでasyncメソッドを呼び出すとどうなりますか?

分類Dev

UIスレッドでasyncメソッドを呼び出す

分類Dev

html属性のblazorでasyncメソッドを呼び出す

分類Dev

asyncでanonymousメソッドを適切に呼び出す

分類Dev

asyncメソッドのawait呼び出しを完了するまで待機させます

分類Dev

Async APIControllerメソッドから「通常の」静的メソッドを呼び出すことはできますか

分類Dev

Asyncメソッドを設定して呼び出す方法

分類Dev

Javaの同期ブロック内で@asyncメソッドを呼び出す

分類Dev

asyncメソッドを呼び出すためにawaitキーワードを使用する必要がある理由

分類Dev

dispatch_asyncでデリゲートメソッドを呼び出す

分類Dev

XamarinFormsのPCLのsyncメソッドでasync関数を呼び出す

分類Dev

awaitなしで呼び出されたasyncメソッドのawaitsはまだ非同期ですか?

分類Dev

1つのメソッドでsyncメソッドとasyncメソッド(api / UI)を呼び出す正しい方法は何ですか

分類Dev

「then」と呼ばれるクラスメソッドでasync / await

分類Dev

インポートされたクラスのメソッドを呼び出すときにAsync / Awaitを使用する

分類Dev

パラメータを使用してメソッドasyncを呼び出す

分類Dev

NoSuchMethodError:メソッド 'ancestorStateOfType'がawaitおよびasyncメソッドを使用してnullで呼び出されました

分類Dev

呼び出しAPIチェーンのすべてのメソッドでasync / awaitを使用する必要がありますか?

分類Dev

async-awaitを使用するメソッドと同等のasync-await-freeとは何ですか?

分類Dev

応答を待たずにメソッドAsyncを呼び出す

分類Dev

Winformsがasyncメソッドを呼び出すと、プログラムがハングアップします

分類Dev

Asyncメソッド中にProductService.Insertを呼び出すと、NopCommerceがクラッシュします

分類Dev

ネストされたAsyncメソッドを呼び出す方法

分類Dev

ネストされたAsyncメソッドを呼び出す方法

分類Dev

C#のsyncからasyncメソッドを呼び出す方法は?

分類Dev

非同期メソッドをsyncとして呼び出す場合のAsyncCTPとBcl.Asyncの違い

分類Dev

非同期メソッドをsyncとして呼び出す場合のAsyncCTPとBcl.Asyncの違い

分類Dev

jQueryの$ .post()メソッドをasync / awaitとtypescriptで使用する方法

分類Dev

module.exportのメソッドでasync / awaitを使用します

Related 関連記事

  1. 1

    awaitキーワードなしでasyncメソッドを呼び出すとどうなりますか?

  2. 2

    UIスレッドでasyncメソッドを呼び出す

  3. 3

    html属性のblazorでasyncメソッドを呼び出す

  4. 4

    asyncでanonymousメソッドを適切に呼び出す

  5. 5

    asyncメソッドのawait呼び出しを完了するまで待機させます

  6. 6

    Async APIControllerメソッドから「通常の」静的メソッドを呼び出すことはできますか

  7. 7

    Asyncメソッドを設定して呼び出す方法

  8. 8

    Javaの同期ブロック内で@asyncメソッドを呼び出す

  9. 9

    asyncメソッドを呼び出すためにawaitキーワードを使用する必要がある理由

  10. 10

    dispatch_asyncでデリゲートメソッドを呼び出す

  11. 11

    XamarinFormsのPCLのsyncメソッドでasync関数を呼び出す

  12. 12

    awaitなしで呼び出されたasyncメソッドのawaitsはまだ非同期ですか?

  13. 13

    1つのメソッドでsyncメソッドとasyncメソッド(api / UI)を呼び出す正しい方法は何ですか

  14. 14

    「then」と呼ばれるクラスメソッドでasync / await

  15. 15

    インポートされたクラスのメソッドを呼び出すときにAsync / Awaitを使用する

  16. 16

    パラメータを使用してメソッドasyncを呼び出す

  17. 17

    NoSuchMethodError:メソッド 'ancestorStateOfType'がawaitおよびasyncメソッドを使用してnullで呼び出されました

  18. 18

    呼び出しAPIチェーンのすべてのメソッドでasync / awaitを使用する必要がありますか?

  19. 19

    async-awaitを使用するメソッドと同等のasync-await-freeとは何ですか?

  20. 20

    応答を待たずにメソッドAsyncを呼び出す

  21. 21

    Winformsがasyncメソッドを呼び出すと、プログラムがハングアップします

  22. 22

    Asyncメソッド中にProductService.Insertを呼び出すと、NopCommerceがクラッシュします

  23. 23

    ネストされたAsyncメソッドを呼び出す方法

  24. 24

    ネストされたAsyncメソッドを呼び出す方法

  25. 25

    C#のsyncからasyncメソッドを呼び出す方法は?

  26. 26

    非同期メソッドをsyncとして呼び出す場合のAsyncCTPとBcl.Asyncの違い

  27. 27

    非同期メソッドをsyncとして呼び出す場合のAsyncCTPとBcl.Asyncの違い

  28. 28

    jQueryの$ .post()メソッドをasync / awaitとtypescriptで使用する方法

  29. 29

    module.exportのメソッドでasync / awaitを使用します

ホットタグ

アーカイブ