比较好的做法:通过标志,在线程中要对标志做相应的处理
然后关闭时,先打开标志,用线程Join来等待结束。
然后关闭时,先打开标志,用线程Join来等待结束。
解决方案 »
- 请教一个调试问题,在执行oledb的insert命令出错时,提示“标准表达式中数据类型不匹配”,我怎样找到是哪个字段赋值有问题了
- 问题: 首页上有三个栏目数据现在显示数据不能对齐,有什么方法可以让datalist中的显示数据居中对齐呀
- 一个功能的代码,大家帮忙,很简单的c#
- 请问,datagridveiw中能否实现某一行或者某一列不可选?
- combobox控件中,能不能像网页中那样,以文本显示,而选定后给出具体数值?
- 高手请进!自定义属性绑定的更新问题
- 怎么样才能用C#读取mysql数据到<li></li>里面呀?
- 如何导入帮助文档
- 请教ShellExcute调用WinRar不能正常解压的问题
- Liger UI c#根据已查的数据显示更详细的数据?过滤显示
- 请用过C#做过工程的人谈一谈感觉怎么样,好吗?
- DBNULL问题
http://expert.csdn.net/Expert/TopicView1.asp?id=1905252
我刚回的贴子如果你使用abort 则必须抛出异常,想避免我就不推荐使用abort(你可以使用try 忽略它)但如此的话,线程就无安全可言
Knight94是说,先abort,然后join,以确保abort的完成吧。
“变量判断中止”是指在使用abort前线设置相应的变量作记号吗?还是把例子中的thead_2_mustend 设置成false后不用使用abort线程“就可以自然的结束”?
只是这样的活着不做事的线程占用的系统资源是不是有点浪费?还是这些资源是安全应付的代价呢:)
感谢ArLi2003的精彩回帖,和betatong的问题,使pipibug学了不少东东:)
Form1 form1;
public a(Form1 obj){
form1 = obj;
} public void op(){
while (trur){
form1.i++;
// 或其它代码
if (form1.chkBox_ThreadEnd.Checked) break; //相符就跳出循环
}
}
}
我的例子如下:while(true)
{
tcpClient = tcpListener.AcceptTcpClient(); // LINE 3
...
}
我在循环里有个阻塞的方法,所以它会一直处于第三行的地方,看看有没有什么方法可以解决这个问题。
Socket sockServer = listener.AcceptSocket();
}放在循环体就可以避免堵塞!