C#线程控制 有一个爬虫程序,开启了10个下载线程和1一个扫描线程(用于解析文件,提取Url放入Url队列)。已知进程结束的状态时10个下载线程已经下载完毕,扫描线程扫描完毕,Url队列为空。我应该如何设计控制进程的结束呢?采用信号量? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 信号量是互斥的,你等待结束,就用waitformultiobjects 能具体说说怎么做吗?不是太理解。我本来是打算采用信号量进行计数的,创建11个信号量,如果某个线程停止,信号量减1,唤醒了就增1.如果信号量集为空了,那么久表示所以线程都停止工作了。不知道这样行不行?使用waitformultiobjects又是怎么做的?有相关的资料参考吗? 结束线程不是Thread.CurrentThread.Abort();吗本人菜鸟~各位勿喷 你在一个列表里保存所有Thread对象的引用。在程序退出之前轮流调用Thread的Join方法 可以搜索一下:http://www.google.com.hk/search?q=AutoResetEvent+ManualResetEvent&hl=zh-CN&safe=strict&prmd=ivns&source=lnt&tbs=lr:lang_1zh-CN|lang_1zh-TW&lr=lang_zh-CN|lang_zh-TW&sa=X&ei=LUrRTcPkDY26vQOSpcC4Cg&ved=0CAcQpwUoAQ 其实关键问题是,我的下载线程和扫描线程如何结束?只有当下载队列为空,所有线程都停止工作时,此时才判断程序正常结束。那么当我队列为空,但是扫描线程还在工作时,我的下载线程应该怎么做?Sleep?但是Sleep完之后线程还是没有退出啊。而我又不能此时将下载线程终结掉,因为可能还会扫描出Url来。 public void WaitBegin(){ Monitor.Enter(this); while ( !m_started ) { Monitor.Wait(this); } Monitor.Exit(this);}这段代码是什么意思? c# 乘法 转向C#,问个新手问题,多谢 c# 中尖括号的用法 有什么办法可以将dataGrid中被选定列的数据放到textBox中 datalist嵌套radiobuttonlist,显示 radiobuttonlist选定值的问题 有关FCKeditor的一个问题 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 求个正则表达式! 打印控制问题,大哥、大姐们给个思路…… 在C#中这个菜单问题一定要用api解决吗? 关于下载功能实现,请人指导一下? WPF中如何让InkCanvas不捕获鼠标或者画笔事件,而让它下面的控件处理
本人菜鸟~各位勿喷
public void WaitBegin()
{
Monitor.Enter(this);
while ( !m_started )
{
Monitor.Wait(this);
}
Monitor.Exit(this);
}这段代码是什么意思?