检查正在运行/退出线程的线程数

时间:2015-05-15 18:31:01

标签: c# multithreading

在c#im中创建我的主题:

void LaunchThread(string url, string search, string regexstring)
{     
    new Thread(delegate()
    {
        Scrape(url, search, regexstring,false);

    }).Start();

}

并且我使用INT变量来跟踪当前运行的线程数量,但我觉得它有时会有点不稳定并且不准确(因为当你检查存在多少线程时)

我有两个问题:

  1. 是否有一个变量可以告诉我当前正在运行多少个线程
  2. 有没有办法在中间关闭/退出所有线程而不等待它们完成?
  3. 非常感谢c#和多任务处理作为一个整体

2 个答案:

答案 0 :(得分:0)

  1. 如果您只对自己开始的主题感兴趣,那么保留一个像您描述的计数器应该可以正常工作。只需确保在获得/更改它时使用正确的锁定。
  2. 如果您在工作线程中执行的工作涉及循环,则可以向循环添加逻辑,以检查变量是否应继续运行。您可以从另一个线程设置此变量(同样,假设正确锁定)。

答案 1 :(得分:0)

  1. 保留您生成的线程的集合,如List<Thread>。然后,您可以获取Count属性来检查线程数。您甚至可以使用threadCollection.Count(t => t.IsAlive)获取实时主题。

  2. 我假设您正在使用HttpWebRequest。看看这两个线程

  3. Terminate loopless thread instantly without Abort or Suspend

    Killing HttpWebRequest object using Thread.Abort