問題タブ [continuewith]

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 に答える
256 参照

c# - スレッドセーフなタスク キューの待機

簡単なことをしたい(それContinueWithスレッドセーフであると仮定して):

問題: 上記のコードでは、すぐに戻り、内部タスクawait _taskがあるかどうかを無視します。

複数回_task延長できる要件を拡張していますが、それらすべてが終了するのをどのように待ちますか? ContinueWith


もちろん、私は古いスレッドセーフな方法でそれを試みることができます:

または、タスクをスレッドセーフ コレクションに格納し、Task.WaitAll.

しかし、最初のスニペットを簡単に修正できるかどうか知りたいです。

0 投票する
0 に答える
51 参照

c# - タスク継続の予期しない動作

次のコードを見てください。

そこで、現在のコンテキスト (WinForms スレッド) を取得し、そのコンテキストで新しいタスクを開始し、タスク スケジューラで同期継続をアタッチしDefaultます。私が理解している限り、継続はスレッドプールスレッドで開始する必要があります。UI スレッドがスレッドプールに属していません。しかし、代わりに、継続を含むすべてのコードが同じスレッドで同期して実行されます。それは私にとってかなり予想外です。

ところで、継続オプションを に設定すると、必要にTaskContinuationOptions.None応じて別のスレッドで実行されます。継続オプションはタスク スケジューラよりも優先されるようですが、それらは単なるヒントであり、スケジューラは必須です。

それはバグですか、それとも予想される動作ですか?

親タスクのコンテキストと継続オプションに関係なく、UI スレッドの外部で継続コードの実行を保証するにはどうすればよいですか? カスタムタスクスケジューラ?

注: これがレガシー コードであることはわかっており、async/await を使用することをお勧めします。