C++Builder 程序员博客
25 Aug
void __fastcall TMyThread::UploadFile()
{
Application->MessageBoxA("123","123",0);
}
//--------------------
_fastcall TMyThread::TMyThread(bool CreateSuspended)
:TThread(CreateSuspended)
{
FreeOnTerminate=true;
Resume();
}
//--------------------
void __fastcall TMyThread::Execute()
{
Synchronize(UploadFile);
}
代码如上
加了断点,TMyThread::UploadFile()根本就没有被执行,如果在Synchronize(UploadFile);上加上断点,系统会变得很慢,直到程序被终止。
我在想,是不是active form是通过ie调用的,本身就不是父进程,所以才会造成这种情况?
请高手指点
xabcxyz,我只是想在线程内访问active form上的组件,除了Synchronize外还有其他办法可以做到么?
除了Synchronize外,borland好像没有提供其他手段
我在Execute内直接调用的话会提示读越界………….
郁闷,Synchronize在一般的vcl窗口程序里面每一点问题,到了active form就出问题了……….
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2724466
这里已经讨论过这个问题了……….但是是基于delphi的
active form里的线程是你编的,外边的线程也是你编的,干嘛不用命名TEvent同步呢?
看了那个帖子里面的例子,不知道怎么用c++实现…….正在看资料
我才摸了三天bcb…….
http://explorer.javaeye.com/blog/106033
按照这里的资料来看
只要在ActiveForm中添加处理WM_NULL消息的处理过程,调用CheckSynchronize进行同步处理
就没问题了,研究一下………