如何创建一个永不结束的线程,不减慢PC

本文关键字:结束 线程 PC 一个 何创建 创建 | 更新日期: 2023-09-27 18:09:44

我用c#开发了一个Windows Service,它在OnStart事件中启动7个线程,调用一个方法来初始化一些硬件设备,然后在等待这些设备的外部事件时进入while循环。

while循环(在每个线程中)是:

            try
            {
                while (!_shutdownEvent.WaitOne(0)) { }
            }
            catch
            {
            }

问题是,当服务启动时(所以,线程正在运行),PC变得非常慢。如何才能实现这样的循环呢?

线程初始化在while循环之前,线程清理在while循环之后。

如何创建一个永不结束的线程,不减慢PC

也许你可以在每次迭代后让线程休眠几毫秒。

try
 {
  while (!_shutdownEvent.WaitOne(0)) 
   {
     Thread.Sleep(1000);
   }
 }
 catch
 {
 }

当数据到达并调用事件时,您的硬件设备应该触发中断,这意味着您不需要在7个不同的线程中循环。相反,一旦从硬件接收到一些数据,就启动一个线程来处理这些数据,以便主线程可以接收更多数据。这种类型的while循环会冻结一个线程,如果你在四核处理器上有7个线程,这意味着你只剩下一个线程用于PC上的所有其他程序,这会导致速度变慢。