問題タブ [async-ctp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
348 参照

c# - await 呼び出しが含まれている場合でも、非同期でマークされたメソッドが同期的に実行される原因は何ですか?

同僚が留守中に書いたコードをデバッグしようとしています。

呼び出しは次のとおりです。

メソッドのシグネチャは次のとおりです。

このメソッドの実行には約 20 秒かかります。ログによると、上記の最初の行の直前と直後に配置すると、そのasync部分が無視されているかのように、タスクが同期的に実行されています。これが起こる原因は何ですか?

awaitasync メソッド内に呼び出しがあることに注意してください。それが違いを生むとは想像できませんが、それはwhileループの中にあります。

また、非常に単純な async/await セットアップを実行する小さなテスト アプリを作成して、実行しているサーバーで await が実際に動作することを確認し、メインではなく、小さなテスト ケースで正しく動作することを確認しました。デバッグしようとしているアプリ。

0 投票する
1 に答える
3821 参照

c# - 非同期CTP-タスクスケジューリングに推奨されるアプローチ

私は現在、全体でTAPを使用する大部分が非同期のアプリケーションに取り組んでいます。Tasksを生成するためのメソッドを持つすべてのクラスには、sがTaskScheduler注入されています。これにより、タスクの明示的なスケジューリングを実行できます。これは、私が理解しているように、MicrosoftがAsyncCTPを使用する方法ではありません。

新しいアプローチ(暗黙的なスケジューリング)で私が抱えている唯一の問題は、以前の哲学は常に「継続によって常にタスクスケジューラが指定されることを知っているので、タスクを完了するコンテキストについて心配する必要がない」ということです。 。

微妙なスレッドエラーを回避するという点で非常にうまく機能しているという理由だけで、それから離れることは少し心配です。コードのすべてのビットについて、コーダーが自分がどのスレッドを使用しているかを考慮することを覚えていることがわかります。彼らがタスクスケジューラを指定しなかった場合、それはバグです。

質問1:暗黙のアプローチが良い考えであることを誰かが私に安心させることができますか?ConfigureAwait(false)と、レガシー/サードパーティのコードでの明示的なスケジューリングによって、非常に多くの問題が発生しているのがわかります。たとえば、「await-ridden」コードが常にUIスレッドで実行されていることを確認するにはどうすればよいですか?

質問2:では、コードからすべてのDIを削除し、暗黙的なスケジューリングの使用を開始すると仮定するTaskSchedulerと、デフォルトのタスクスケジューラをどのように設定しますか?メソッドの途中で、高価なメソッドを待つ直前にスケジューラーを変更し、その後再び設定するのはどうですか?

(ps私はすでにhttp://msmvps.com/blogs/jon_skeet/archive/2010/11/02/configuring-waiting.aspxを読んでいます)

0 投票する
2 に答える
439 参照

c# - 非同期高速パス

これは、非同期 CTP 更新が非同期の「高速パス」を利用する方法に関する記事です。

効率の向上などについて言及していますが、「高速パス」が何であるかさえわかりませんか?この記事のヒントが自分に関連しているかどうかを判断したいのですが、「高速パス」の説明が本当に見つかりませんか?

0 投票する
1 に答える
688 参照

c# - 非同期CTP-アンビエントキャンセルトークンとIProgress

Async CTPはアンビエントを介した暗黙のスケジューリングを促進することを念頭に置いて、私もアンビエントSynchronizationContextを作成すべきではない理由はありますか?CancellationTokenIProgress

私は現在TaskScheduler、明示的なスケジューリングのためにアラウンドを渡すのと同じように、これらをメソッドに渡します。ただし、スケジューラーがアンビエントであると想定されているので、パズルの他の部分についても同じルールに従うのではないでしょうか。

0 投票する
1 に答える
320 参照

c# - Async CTP を利用し、InvalidOperationException "Task_Start_NullAction" をスローする C# コード

d2 への非同期呼び出しを行う QueryJourneys を呼び出しますが、WebClient を使用して一部のコンテンツ (XML) を非同期でダウンロードしようとすると失敗します。

唯一のメッセージとして文字列"Task_Start_NullAction"を含む例外InvalidOperationExceptionを取得します。

なにが問題ですか?

呼び出しコード:

例外をスローする背後にあるコード:

0 投票する
1 に答える
256 参照

.net - 既存の非同期メソッドを TPL 互換メソッドにラップする

コールバック関数をパラメーターとして受け入れる既存の非同期メソッドをタスク並列ライブラリ互換メソッドにラップする方法は?

0 投票する
2 に答える
981 参照

c# - 非同期 CTP のパフォーマンスが悪いのはなぜですか?

理由がよくわかりませんここでコードのパフォーマンスが改善さawaitれません。async

懐疑的ではありますが、ダウンロードが並行して行われるようにコンパイラがメソッドを書き直すはずだと思っていましたが、実際にはそうではないようです。
はそれを認識してawaitおり、async別のスレッドを作成していません。ただし、OSはダウンロードを並行して実行し、元のスレッドでコードをコールバックする必要があります-そうではありませんか?

不適切に使用しasyncていますか? awaitそれらを使用する適切な方法は何ですか?

コード:

出力:

0 投票する
2 に答える
1133 参照

c# - 暗黙的にスケジュールされたメソッドの TaskScheduler を明示的に指定する

暗黙のスケジューリングを使用する次の方法があります。

ただし、特定の呼び出しサイトから、デフォルトではなく優先度の低いスケジューラで実行したい:

どうすればこれを達成できますか? とても単純な質問のように思えますが、私は完全なメンタルブロックを抱えています!

注: この例が実際にはコンパイルされないことは承知しています :)

0 投票する
2 に答える
509 参照

system.reactive - rx リアクティブ拡張:各サブスクライバーがオブザーバブルから異なる値 (次の値) を取得する方法は?

リアクティブ拡張を使用すると、同じオブザーバブルに 2 回サブスクライブするのは簡単です。オブザーバブルで新しい値が利用可能になると、両方のサブスクライバーがこの同じ値で呼び出されます。

このオブザーバブルから各サブスクライバーに異なる値 (次の値) を取得させる方法はありますか?

私が求めているものの例:
ソース シーケンス: [1,2,3,4,5,...] (無限)
ソースは未知の速度で常に新しいアイテムを追加しています。
N サブスクライバーを使用して、アイテムごとに長時間の非同期アクションを実行しようとしています。

1 番目の加入者: 1,2,4,...
2 番目の加入者: 3,5,...
...
または
1 番目の加入者: 1,3,...
2 番目の加入者: 2,4,5,...
.. .
または
1 番目の加入者: 1,3,5,...
2 番目の加入者: 2,4,6,...