|
分類:[Windows 全般]
C#2008である制御系アプリを製作しています。リアルタイム性を出したかったので、 Process.PriorityClass プロパティ を使用して、プライオリティをリアルタイムで 動かしています。
そのアプリで、外部I/Oをポーリングで監視するスレッドがありまして、 そのポーリング間隔をなるべく短くしたいと考えました。 外部から処理を開始するトリガをなるべく速く受信したいのです。 しかし、ポーリング間隔を短くすることで、そのアプリ内の処理が遅くなるのは 避けたいと考えています。 ポーリングは、処理の開始の受信と処理結果を返すだけなので、 アプリ内で処理している時は別に止まっていても構いません。
そこで、外部I/Oの監視のスレッドだけプライオリティを下げて、 他の優先度の高い処理をしている時は、外部I/Oの監視用スレッドは お休みをしていただくようにしようと、スレッドのPriorityプロパティに Normalを設定してみました。 でも、それが効いているんだか効いていないんだかよくわからない状況です。
アプリのプライオリティを上げておいて、その中の1つのスレッドだけプライオリティを 下げるなんてことはできるのでしょうか。 御存知の方、アドバイスをお願いします。
|