###前提・実現したいこと
C#にてマルチスレッドのアプリケーションを開発しています。
マルチスレッドのスレッド数の設定について教えていただきたいとことがあります。
既にあるアプリケーションに対して、スレッド追加をしたところ、コンテキストニューが表示されなくなりました。
最適な、スレッド数の確認方法と、設定方法をご教授いただけると助かります。
また、スレッド数を増やすことが、必須となる場合、全体的に処理速度を落として、
平均化させる様な方法はありますでしょうか?
###発生している問題・エラーメッセージ
複数の機器相手に、状態監視をおこなうアプリケーションです。
相手機器とのやり取りは、なるべく高速におこなう必要があり、
機器ごとに、スレッドが立ち上がり、無限ループしている状態です。
自分が作成しているモジュール以外でもスレッドを立ち上げているため、
全体のスレッド数は、把握できていません。
このアプリケーションはフォームがひとつあり、起動後、タスクトレイに格納されます。
タスクトレイのアイコンをクリックするとコンテキストメニューで、メニューが表示されます。
正常に動作するアプリケーションに対して、今回、4つのスレッド追加したところ、
コンテキストメニューが表示されなくなりました。
時間が経過すれば、表示はされますが、反応はしないです。
###該当のソースコード
下記コードにて、2つの機器に対して、2つのスレッドを追加しています。 ThreadType●Conditionは、状態をチェックし、thType●Collectは、データを取得するスレッドです。 Thread thTypeACondition = new Thread(new ParameterizedThreadStart(ThreadTypeACondition)); thTypeACondition.Start(obj); Thread thTypeACollect = new Thread(new ParameterizedThreadStart(ThreadTypeACollect)); thTypeACollect.Start(obj); Thread thTypeBCondition = new Thread(new ParameterizedThreadStart(ThreadTypeBCondition)); thTypeBCondition.Start(obj); Thread thTypeBCollect = new Thread(new ParameterizedThreadStart(ThreadTypeBCollect)); thTypeBCollect.Start(obj);
###試したこと
・ThreadType●Conditionのスレッドをコメントすると、コンテキストメニューが表示されるようになります。
・ThreadType●Conditionのコメントをなくして、Thread.Sleepを追加してみましたが、
コンテキストメニューは表示されなくなります。
・ThreadPool.SetMinThreadsで、最低スレッド数を多くしてみましたが、
コンテキストメニューは表示されません。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
OS: Windows7 (64bit)
CPU: Core i5
RAM: 8GByte
Visual Studio 2015 Express for Desktop
回答2件
あなたの回答
tips
プレビュー