問題タブ [taskcompletionsource]

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 投票する
1 に答える
882 参照

c# - TaskCompletionSource は常に完了する必要がありますか?

が完了しない場合 (つまり、またはが呼び出されない場合)TaskCompletionSourceとその はどうなりますか? 完了しないため、 は永遠に存続しますか?TaskTaskCompletionSourceSetCancelledSetExceptionSetResultTask

以下の例では、パラメーター化されたテストの簡略化されたバージョンがあります。タイムアウト (MyEeventが 1000 ミリ秒以内に呼び出されない) の場合、 TaskCompletionSource( tcs) は完了しません。私はこのような多くのテストを持っています。なんらかのクリーンアップを行う必要がありますか (たとえば、tcs.SetCancelled() が呼び出されていることを確認します)。

現在、上記のテストを改善する方法はありますか (たとえば、より簡潔/シンプル/読みやすくするなど)?

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

c# - TaskCompletionSource の使用

完了ソースがキャンセルされた場合、結果変数には何が返されますか?

このアプローチが正しいかどうかはよくわかりません。

  1. つまり、ステータス変数を使用して「someresult」のラッパーを作成するのではなく、タスクのステータスに依存することをお勧めしますか?
  2. キャンセルされたタスクを処理するには? 私はコールバックのファンではなく、タスクのステータスを分析できる ContinueWith を使用したソリューションが好きではありません。
0 投票する
1 に答える
254 参照

c# - MYOB oauthService.GetTokensAsync がダイアログを表示しない

TaskCompletionSource に関する私の質問の結果として

トークンを取得するために同様の手法を試しました

を使用してこれを呼び出す

ただし、実行するとプログラムがロックされます。

以下は正常に動作します

承認ダイアログ ボックスが表示されます。

0 投票する
3 に答える
967 参照

c# - TCS が待機しないのはなぜですか?

asyncキーワードはCILを変更ます(メソッド内に await がない場合でも) が、主に存在できるようにするためのものです。await

しかし、次のことが起こるとは予想していませんでした。

このプリント:

でも私が変われば

それは印刷します:

質問

遅延が表示されないのはなぜですか? TCS は 3 秒後にのみ解決されます。その間、タスクは解決されず、待機する必要があります。

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

c# - 状態が 'RanToCompletion' に遷移しても、タスクの待機が完了しない

まず、お詫び申し上げます。適切な単純なサンプル アプリケーションでこの動作を再現することはできません。この機能は、呼び出しコードのリファクタリングの前に機能していました。

TaskCompletionSource を使用して非同期操作の終了を通知しようとしています (長時間実行されるプロセスが完了するか、タイムアウトが TrySetResult() を使用して完了を通知する場合があります)。

私の問題は、タスクが「WaitingForActivation」から「RanToCompletion」に移行していることがわかっても、await の呼び出しが完了しないことです。

テストとして、タスクの継続を作成し、これが呼び出され、タイマーを追加してタスクの状態を表示しました。

これにより、次の出力が得られます。

きっと続きが当たって、直ぐ待っている Task も完了するはずですよね?この動作には、どのような外部 (呼び出し) 要因が考えられますか?