2016-08-26 21 views
0

C#の上に作成されたマルチスレッドアプリケーションがあります。スレッドはWaitSleepJoin状態にあり、実行中ではありません

私のアプリケーションでは、2つのパネルを持つ1つのフォームがあります。

  • pnlSearch
  • pnlSlide

各々は、各スレッドによって制御される。

  • TH_Slide
  • TH_Search

TH_SlideForm_OnLoadで呼び出されます。私はpnlSlideの中に私のオブジェクトのすべての情報を表示できます。

while(true) 
{ 
    // do some infinite work to slide objects information. 
    Thread.Sleep(20000); // display for 20 secs. 
} 

pnlSearchが非表示になり、マウスがフォーム内に移動するとき、これが処理される呼び出されたときTH_Search表示されます。また、pnlSearchの内部には、検索された情報を動的に表示するためのホルダーとしてオブジェクトがあります。

txtFilterを入力し、私のデータベースから情報をロードしてUserControlに表示すると、問題が発生します。

TH_Slide.ThreadStateは文句を言わない変更を行いWaitSleepJoinなり、ひいてはもうpnlSlideでスライド情報を実行していないでしょう。

注:クロススレッド操作は代理人を使用して処理されるため、エラーは発生しません。私のアプリケーションは現在、完全に

  • TH_Slide.IsBackground = true
  • TH_Slide.Priority = ThreadPriority.Highest
  • TH_Search.Priority = ThreadPriority.Normal

私はマルチスレッドプログラミングに新しいですし、私がいない完全にすることができますを設定することで取り組んでいる

答えて

0

このアルゴリズムが私の問題を解決する理由を理解する。

関連する問題