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同步呢?

引用 6 楼 xabcxyz 的回复:
active form里的线程是你编的,外边的线程也是你编的,干嘛不用命名TEvent同步呢?

看了那个帖子里面的例子,不知道怎么用c++实现…….正在看资料

我才摸了三天bcb…….

http://explorer.javaeye.com/blog/106033

按照这里的资料来看

只要在ActiveForm中添加处理WM_NULL消息的处理过程,调用CheckSynchronize进行同步处理

就没问题了,研究一下………