C# winform 多线程编程问题
时间:2011-12-19
来源:互联网
我在form1的load事件函数中创建并启动了一个线程:
C# code
下面是我线程函数:
C# code
为了让线程在关于主窗口时退出,使用了bool formclosed标志,并在FormClosed事件函数中设置为ture。
问题来了,当我用VS2010 调试运行时,程序是正常的,当我关闭窗口时,调试环境并没有退出(以前调试时,关闭窗口系统就会自动退出调试环境),这个问题是线程还没用退出?(因为去掉线程就正常了),还是本来VS2010就存在这个bug?
请高手解答啊 谢谢!!!!!
C# code
private void Form1_Load(object sender, EventArgs e) { Thread getnewdataThread = new Thread(new ThreadStart(GetNewData)); getnewdataThread.Start(); }
下面是我线程函数:
C# code
private void GetNewData() { ... while ( !formclosed ) { GetNewDataEvent.WaitOne(); ... } }
为了让线程在关于主窗口时退出,使用了bool formclosed标志,并在FormClosed事件函数中设置为ture。
问题来了,当我用VS2010 调试运行时,程序是正常的,当我关闭窗口时,调试环境并没有退出(以前调试时,关闭窗口系统就会自动退出调试环境),这个问题是线程还没用退出?(因为去掉线程就正常了),还是本来VS2010就存在这个bug?
请高手解答啊 谢谢!!!!!
作者: shelllink110 发布时间: 2011-12-19
晕 发完贴后 感觉应该GetNewDataEvent.WaitOne()的问题 我先试试哈
作者: shelllink110 发布时间: 2011-12-19
关闭窗口时调用Stop关闭线程不就可以了
作者: dreamboy0908 发布时间: 2011-12-19
我是在 Form1_Load 函数里创建的线程,在FormClosing事件不能调用该线程的Abort方法
是不是我创建线程的位置有问题呢,应该怎么做比较合理啊?
我刚刚试试了 就是那个WaitOne的原因
是不是我创建线程的位置有问题呢,应该怎么做比较合理啊?
我刚刚试试了 就是那个WaitOne的原因
引用 2 楼 dreamboy0908 的回复:
关闭窗口时调用Stop关闭线程不就可以了
关闭窗口时调用Stop关闭线程不就可以了
作者: shelllink110 发布时间: 2011-12-19
晕死 有些地方没用理解清楚啊
该把Thread对象的声明放在load函数外面,对象的创建放在load里面 这样FormClosed就可以调用Abort方法来终止线程了 呵呵 基础不行啊
闹笑话了 ~~
该把Thread对象的声明放在load函数外面,对象的创建放在load里面 这样FormClosed就可以调用Abort方法来终止线程了 呵呵 基础不行啊
闹笑话了 ~~
作者: shelllink110 发布时间: 2011-12-19
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28