問題タブ [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.
c# - TaskCompletionSource は常に完了する必要がありますか?
が完了しない場合 (つまり、またはが呼び出されない場合)TaskCompletionSource
とその はどうなりますか? 完了しないため、 は永遠に存続しますか?Task
TaskCompletionSource
SetCancelled
SetException
SetResult
Task
以下の例では、パラメーター化されたテストの簡略化されたバージョンがあります。タイムアウト (MyEevent
が 1000 ミリ秒以内に呼び出されない) の場合、 TaskCompletionSource
( tcs
) は完了しません。私はこのような多くのテストを持っています。なんらかのクリーンアップを行う必要がありますか (たとえば、tcs.SetCancelled() が呼び出されていることを確認します)。
現在、上記のテストを改善する方法はありますか (たとえば、より簡潔/シンプル/読みやすくするなど)?
c# - TaskCompletionSource の使用
完了ソースがキャンセルされた場合、結果変数には何が返されますか?
このアプローチが正しいかどうかはよくわかりません。
- つまり、ステータス変数を使用して「someresult」のラッパーを作成するのではなく、タスクのステータスに依存することをお勧めしますか?
- キャンセルされたタスクを処理するには? 私はコールバックのファンではなく、タスクのステータスを分析できる ContinueWith を使用したソリューションが好きではありません。
c# - MYOB oauthService.GetTokensAsync がダイアログを表示しない
TaskCompletionSource に関する私の質問の結果として
トークンを取得するために同様の手法を試しました
を使用してこれを呼び出す
ただし、実行するとプログラムがロックされます。
以下は正常に動作します
承認ダイアログ ボックスが表示されます。
c# - TCS が待機しないのはなぜですか?
async
キーワードはCILを変更します(メソッド内に await がない場合でも) が、主に存在できるようにするためのものです。await
しかし、次のことが起こるとは予想していませんでした。
このプリント:
でも私が変われば
に
それは印刷します:
質問
遅延が表示されないのはなぜですか? TCS は 3 秒後にのみ解決されます。その間、タスクは解決されず、待機する必要があります。
c# - 状態が 'RanToCompletion' に遷移しても、タスクの待機が完了しない
まず、お詫び申し上げます。適切な単純なサンプル アプリケーションでこの動作を再現することはできません。この機能は、呼び出しコードのリファクタリングの前に機能していました。
TaskCompletionSource を使用して非同期操作の終了を通知しようとしています (長時間実行されるプロセスが完了するか、タイムアウトが TrySetResult() を使用して完了を通知する場合があります)。
私の問題は、タスクが「WaitingForActivation」から「RanToCompletion」に移行していることがわかっても、await の呼び出しが完了しないことです。
テストとして、タスクの継続を作成し、これが呼び出され、タイマーを追加してタスクの状態を表示しました。
これにより、次の出力が得られます。
きっと続きが当たって、直ぐ待っている Task も完了するはずですよね?この動作には、どのような外部 (呼び出し) 要因が考えられますか?