日期:2014-05-19  浏览次数:20946 次

初学vs2005多线程问题
问题1:
winform用了多线程,线程在运行状态,直接关闭窗口要报错,用了
                private   void   Sub_BbsExp_FormClosed(object   sender,   FormClosedEventArgs   e)
                {
                      t.Abort();
                }

还是不行

问题2;用Suspend()提示过时,那用什么方法呢,我要实例化新线程,实现的效果是点   挂起按钮   就挂起线程,此时挂起按钮变为   取消挂起   ,再点就继续该线程.

------解决方案--------------------
个人意见对第二个问题时,你可以使用线程阻塞
这样可能更好点
------解决方案--------------------
写一个变量
private bool exit = false;
在窗体关闭时将这个变量设为 true,
在线程里不断检查这个变量,一旦它为 true,线程就立即释放资源并退出。
==========
你也可以试试这个
private void Sub_BbsExp_FormClosed(object sender, FormClosedEventArgs e)
{
t.Abort();
t.Join(10);
}

------解决方案--------------------
愚翁blog中的文章,参考下

http://blog.csdn.net/Knight94/archive/2006/08/24/1111267.aspx
------解决方案--------------------
suspend虽然已经过时 但是还是可以用的

可以将线程的设置为Background的 这样在主程序退出就会随即退出
------解决方案--------------------
路过~~
友情帮顶
------解决方案--------------------
第一个问题可以设后台线程,即thread1.IsBackground = true;
不过楼上的photoplan()的方法我也用过,以前在项目里我也是用一个bool变量来标记线程是否应该马上终止的.
第二个问题,suspend()还是可以用啊,或者你可以用Threading命名空间下的Monitor,Mutex这样的类,具体的使用方法可以查一下MSDN.
------解决方案--------------------
用ABORT当然会引发异常,SUSPEND也不是马上就能响应的,可能处于RequestSuspend状态,所以ABORT和SUSPEND最好是不发了用,时间控制不好。
我最近用多线程开发了一个网络软件,用的是两个标记量shouldStop和shouldSuspend来完成的。

--------------------------------------------
专注于自动提交,如发贴机资源采集器等网络营销软件的开发及相关领域如验证码识别技术。
QQ群号:24733057
------解决方案--------------------
弄个标记stop和方法Stop将stop域置为true,如果为stop为真就从方法中立即返回,这样就可以正常终止