线程处于WaitSleepJoin状态并且不再运行

时间:2016-08-26 08:43:15

标签: c# multithreading winforms

我在C#

之上创建了一个多线程应用程序

在我的应用程序中,我有一个带有两个面板的表单。

  • pnlSearch
  • pnlSlide

每个线程由每个线程控制:

  • TH_Slide
  • TH_Search
TH_Slide上调用

Form_OnLoad,我可以在pnlSlide内显示我的对象的所有信息。

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

pnlSearch被隐藏,并会在调用TH_Search时显示,当鼠标移动到表单内部时会处理此问题。在pnlSearch内部,txtFilter textBox和UserControl对象作为持有者动态显示搜索到的信息。

现在问题是当我输入txtFilter的{​​{1}}并从我的数据库加载信息并将其显示到pnlSearch

UserControl变为TH_Slide.ThreadState并且不再运行,因此WaitSleepJoin中的幻灯片信息不会进行任何更改

  

注意:使用委托处理交叉线程操作,因此不会抛出任何错误。

1 个答案:

答案 0 :(得分:0)

我的应用程序现在通过设置

完美地工作
  • TH_Slide.IsBackground = true
  • TH_Slide.Priority = ThreadPriority.Highest
  • TH_Search.Priority = ThreadPriority.Normal

我是多线程编程的新手,我无法完全理解为什么这个算法能解决我的问题。