2016-05-06 3 views
2

WPFアプリケーションでは、私はスレッドをプールしています(各スレッドはbase64イメージを返すREST Webサービスへの呼び出しです)。WPF/Cでオンデマンドのスレッドをサスペンド/リスタートする

これらのスレッドは非同期であり、それぞれのスレッドを一時停止/再開できるようにしたいと考えています。

  • CancellationTokenのようなものを使用することはオプションではありません。各スレッドはちょうど呼び出しを行い、応答を待っているからです。

  • 私は、スレッド=>サスペンド&の再起動は廃止/廃止されました。

誰かが何か提案があれば、

ありがとうございます。

+0

'スレッドはちょうど呼び出しを行い、答えを待っています。それは待っている間に処理時間を使用しないという意味ですか?なぜそれを中断するのですか? – x4rf41

+0

実際には、まず非同期的にイメージを取得するためにいくつかのスレッド(10,20それに依存します)を実行します。これらの要求は緊急ではない。時々私は非常に緊急の別のタスクを実行:不幸にも、これは遅いです。私はタスクの中で優先順位を置くことはできません:この1つは緊急ではない、他の1つは緊急です。私はタスク間のディスパッチを管理することはできません...それは私が緊急ではないタスクを中断/再開することに興味がある理由です –

答えて

0

したがって、スレッドの種類のために、スレッドで探しているコントロールのタイプは、正確には実行可能ではありません。スレッドの実行は、OSとそのスケジューラによってキューに入れられます。つまり、スレッドがアクティブに実行されるタイミングは制御できません。ただし、ファイバーはスレッドと似ていますが、アプリケーションがスレッドのスケジューリングと切り替えを担当する点が異なります。ファイバーはモノラルでのコルーチンとして理想化されており、win32ライブラリーはそれらをサポートしています。しかし、.netフレームワークはこれをあまりサポートしていません。

ここに住む人々の中には繊維についての質問がありましたが、その検索はほとんど役に立たなかったです。 SO post

This答えは、あなたの旅に役立つ方向にあなたを導くことがあります。並列タスク・ライブラリー用の独自のスケジューラーを作成する方法について説明します。

私はまだそれが必要ではなかったので、私はコンセプトを探っていませんでしたが、歩留まり帰還プログラムの設計は代替策のようです。

関連する問題