高分请教:调试环境和部署环境下,多线程判断结束的问题!

hb9191 2010-12-03 06:44:47
环境vs2008
定义了两个线程w1,w2。都start了。
在w1和w2内控制两个bool变量threadEnd1、threadEnd2(全局变量),开始置为false,结束置为true。
在调用线程的方法内判断:
while (true)
{
if (threadEnd1 && threadEnd2) break;
}
在调试环境下没问题,两个线程结束时,循环结束。但在应用部署后,程序一直等待,循环不出来!
请问这是怎么回事???
...全文
85 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjancn 2010-12-06
  • 打赏
  • 举报
回复
楼主没说清楚。
建议输出日志看看,跟踪变量状态。
wolftop 2010-12-04
  • 打赏
  • 举报
回复
volatile bool threadEnd1,threadEnd2;
hb9191 2010-12-04
  • 打赏
  • 举报
回复
试验了一下,lijun84的volatile顶用!!调试和安装环境都可以!!谢谢。

w1.join()和w2.join()在调试环境可以,但安装部署后还是要等w1完成后w2才接着干!?

w1.Start(tp1);//tp1,tp2是参数
w2.Start(tp2);
w1.Join();
MessageBox.Show("w1 ok");
w2.Join();
MessageBox.Show("w2 ok);

不管是Any Cpu生成,还是x86生成。
hb9191 2010-12-03
  • 打赏
  • 举报
回复
逻辑上有错调试不该过。
Join()的用法请详示,谢谢!
我是按x86生成部署的,不知有影响不?
手机回复。谢。
hb9191 2010-12-03
  • 打赏
  • 举报
回复
逻辑上有错调试不该过。
Join()的用法请详示,谢谢!
我是按x86生成部署的,不知有影响不?
手机回复。谢。
hookyzlr 2010-12-03
  • 打赏
  • 举报
回复
应该是线程内部执行出了问题。检查下线程内部代码逻辑
xiehuanxie 2010-12-03
  • 打赏
  • 举报
回复
Thread.Join()
deepmist 2010-12-03
  • 打赏
  • 举报
回复
帮顶,高手快来

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧