2015-05-15 67 views
-2

在C#中的IM创造我的主题是这样的:检查多少个线程在运行/退出线程

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

    }).Start(); 

} 

我用一个int变量遵循多少线程当前正在运行,但我有一种感觉它可以有时有点靠不住,不准确

我有2个问题(因为当你的时间上存在多少支票):

  1. 有一个变量,它会告诉我很多线程如何目前运行
  2. 有没有办法关闭/退出所有线程中途不等待他们完成?

非常感谢这样的IM新的C#和多任务作为一个整体

+0

是的,有。是的,这也是可能的。检查msdn。 –

+0

@AdrianoRepetti这不是很有帮助,我想...这里的很多问题都可以用“检查文档”来解答...... – imlokesh

+0

在使用它之前,您需要了解更多关于.NET线程的知识。否则,你正在做错事的方式。不要手动启动和跟踪线程,而只需让ThreadPool处理它。对于2,您可以使用'ManualResetEventSlim'。 – Vlad

回答

0
  1. 如果你感兴趣的只有你已经开始,保持一个计数器像你描述的应该正常工作的线程。只要确保在获取/更改时使用正确的锁定。
  2. 如果您在工作线程中所做的工作涉及到一个循环,您可以向循环添加逻辑来检查变量是否应该继续运行。你可以从另一个线程设置这个变量(同样,假设锁定正确)。
+0

不幸的是,它不涉及循环,但其中包含一个Web客户端,可能需要几秒钟才能完成 - 甚至几分钟。 –