读书人

一个对象在不同线程间工作的有关问题

发布时间: 2012-02-24 16:30:38 作者: rapoo

一个对象在不同线程间工作的问题
工具栏上有一个check button。当button按下处于checked状态时,启动一个线程,该线程内循环执行objA.workstart()。

C/C++ code
UINT WorkThread(...){    int state;    do    {        state = objA.workstart();    }while( state==GoOn  );}

workstart()执行时间较长,所以其中添加了多处用于函数退出的判断句: if ( ifEndWork ) return DoNotGoOn;
说明:当ifEndWork = true时候退出workstart并停止循环。

当button再次按下处于弹起状态时,执行objA.workstop()。
workstop()主要内容是 ifEndWork=TRUE;

我的思路就是在子线程执行objA.workstart的时候,由主线程执行objA.workstop来停止工作。

但是结果发现workstop对workstart根本没有影响。我将ifEndWork设置成volatile了也不行。
谢谢。


[解决办法]
进去跟踪一下阿
或者在线程中加TRACE 跟踪
在 if ( ifEndWork ) return DoNotGoOn; 跟踪 EndWork的值
看看你checkButton弹起时ifEndWork 的值是否是true

[解决办法]
呵呵,接分!!
[解决办法]
来了来了。。总是这么及时。。
[解决办法]
ifEndWork是全局变量就可以。
[解决办法]
jf!

[解决办法]
jf !!!!!!!!!
[解决办法]
那就把分给大家吧。
[解决办法]
来的及时
[解决办法]
探讨
居然是漏判断了一个地方而已。散分

[解决办法]
一定要细心啊,同学。

读书人网 >VC/MFC

热点推荐