线程处于WaitSleepJoin状态,不再运行

本文关键字:不再 再运行 状态 WaitSleepJoin 线程 | 更新日期: 2023-09-27 18:04:11

我在C#之上创建了一个多线程应用程序。

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

  • 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 textBox和UserControl对象作为动态显示搜索信息的持有人。

现在的问题是,当我在pnlSearchtxtFilter中键入并从我的数据库加载信息并将其显示到UserControl时。

TH_Slide.ThreadState变成WaitSleepJoin,不再运行,因此pnlSlide中的幻灯片信息不会做任何更改

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

线程处于WaitSleepJoin状态,不再运行

通过设置

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

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