CCRを使用するプロジェクトでタスクの実行にタイムアウトを実装したいと思います。基本的に私は項目をポートにポストするか、またはDispatcherQueueにタスクをエンキューするときに、設定された時間よりも時間がかかる場合は、タスクまたは実行中のスレッドを中断できるようにします。これどうやってするの?CCRスレッドタスクを中止するにはどうすればよいですか?
答えて
尋ねていることを確認できますか? Dispatcherで長寿命のタスクを実行していますか?スレッドを強制終了するとCCRモデルが壊れるため、作業を完了して処理するためにスレッドに信号を送る必要があります。それは十分に速い仕上げされていないループだと仮定すると、あなたはタイマーエンキューすることを選択するかもしれません:
var resultTimeoutPort = new Port<DateTime>();
dispatcherQueue.EnqueueTimer(TimeSpan.FromSeconds(RESULT_TIMEOUT),
resultTimeoutPort);
をブロッキングスレッドがresultTimeoutPortに利用可能な基準を持っていることを確認します。ブロッキングループでは、終了条件の一つは、次のようになります。
do
{
//foomungus amount of work
}while(resultTimeoutPort.Test()==null&&
someOtherCondition)
私は間違ってツリーを吠えてる場合は詳細情報を投稿してください。
あなたは正しい方向に向かっていますが、私はfoomungusの作業コードを変更する必要がないようにしようとしていました。また、そのコードにはループがない場合もありますが、時にはそれを試して完了したい場合や、できない場合は消えてしまいます。私はいくつかの読書をしてきたし、あなたが言ったようにモデルを壊すので、私が望む正確な振る舞いを得る方法がないように見える。 – SpaceghostAli
本当に、スレッドを殺すことなく、私はあなたがすぐに救済するためにそれに信号を送ることに固執していると思います。あなたは何を達成しようとしていますか?おそらく、問題に取り組むには別の方法がありますか? – spender
スレッド(Thread.CurrentThread)は、CCRの「Receive」ハンドラの先頭に(またはデリゲートを介してメソッドを呼び出すメソッドに)登録できます。その後、定期的なチェックを行い、必要に応じて、手動でスレッドを作成した場合と同じ方法で中止することができます。キャッチは、固定数のスレッドで独自のMicrosoft.Ccr.Core.Dispatcherを使用すると、(テストに基づいて)中断した後にそれらのスレッドを戻す方法がないと思います。したがって、ディスパッチャーに5つのスレッドがある場合は、登録されたタスクに関係なく、投稿が機能しなくなるまでに5回だけ中断できます。ただし、CLRスレッドプールを使用してDispatcherQueueを作成すると、中止するCCRスレッドは自動的に置き換えられ、その問題は発生しません。私が見たところでは、CCRディスパッチャが推奨されていますが、CLRスレッドプールを使用するのがこのような状況になる方法だと思います。
- 1. フェッチ要求を中止するにはどうすればよいですか?
- 2. 処理中にApplyBindingsを停止、中断、またはキャンセルするにはどうすればよいですか?
- 3. 進行中のGWT RequestBuilderリクエストを中止するにはどうすればよいですか?
- 4. .net ccrのEnqueueTimerにパラメータを渡すにはどうすればいいですか
- 5. リフレッシュ中に重複するエントリを防止するにはどうすればよいですか?
- 6. Javaでオーディオを停止するにはどうすればよいですか?
- 7. モバイルアプリでフィッシングを防止するにはどうすればよいですか?
- 8. dispatchEventでDefault()を防止するにはどうすればよいですか?
- 9. WindowsでKibanaを停止するにはどうすればよいですか?
- 10. サービスでメディアプレーヤーを停止するにはどうすればよいですか?
- 11. Dreamweaverで依存ファイルを置くことを中止するにはどうすればよいですか?
- 12. eclipseの中からJunitを停止するにはどうすればよいですか?
- 13. laravel(php)の実行をjavascript(ajax)から中止するにはどうすればよいですか?
- 14. 下位レベル関数からフィッシュスクリプトを中止するにはどうすればよいですか?
- 15. Jenkinsfileで実行中のコンテナを停止するにはどうすればよいですか?
- 16. Outlookの購読中止リンクをニュースレターで使用するにはどうすればよいですか?
- 17. Synapse for DelphiでSMTP送信操作を中止するにはどうすればよいですか?
- 18. Chromeでデバッグ中のJavaScriptプログラムを停止するにはどうすればよいですか?
- 19. if文の中でコードを停止するにはどうすればよいですか?
- 20. Buildrを正常に中止するにはどうすればよいですか?
- 21. テストクラスの実行中にマネージトリガの実行を停止するにはどうすればよいですか?
- 22. アイテムの編集中にサブフォームの自動スクロールを停止するにはどうすればよいですか?
- 23. ネットワークのトレーニング中にイメージデータの冗長性を防止するにはどうすればよいですか?
- 24. 不適切なテストケースを適切に中止するにはどうすればよいですか?
- 25. アクティビティ(アプリケーション)のフォーカス中にAndroidの自動ロックを防止するにはどうすればよいですか?
- 26. Jqueryアニメーション中にテキストの移動を停止するにはどうすればよいですか?
- 27. スパークストリーミングジョブを停止するにはどうすればよいですか?
- 28. Android ProgressBar Circleを停止するにはどうすればよいですか?
- 29. Javaスレッドを停止するにはどうすればよいですか?
- 30. CompileAssemblyFromSourceのメモリリークを防止するにはどうすればよいですか?
Cool。ロボティクスの質問。 – Will