首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请教多线程访问VCL组件行不行

2012-03-22 
请问多线程访问VCL组件行不行?下面是我在网上找一个代码,在我的电脑上运行有时出错,但我我不知道是什么原

请问多线程访问VCL组件行不行?
下面是我在网上找一个代码,在我的电脑上运行有时出错,但我我不知道是什么原因?
用BCB写一个最简单的多线程

//.cpp中的线程描述
_fastcall   TMyThread::TMyThread(void):TThread(true)
{
FreeOnTerminate=true;
Resume();
}

//声明线程
void   __fastcall   TMyThread::Execute()//线程功能
{
for(int   i=1;i <4;i++)
Form1-> Memo1-> Text=Form1-> Memo1-> Text+IntToStr(i)+ "我得到了参数--我的线程\r\n ";
}
void   __fastcall   TForm1::Button2Click(TObject   *Sender)//执行线程
{
MyThread=new   TMyThread();
MyThread-> FreeOnTerminate=true;
}
//.h中的线程类定义
//声明线程
class   TMyThread:public   TThread
{
public:
    __fastcall   TMyThread(void);
private:
        void   __fastcall   Execute(void);
};

//可以在.h的窗体类定义中加入
TMyThread   *MyThread;//声明一个自己的线程


[解决办法]
这句话应该放在Synchronize里调用

Form1-> Memo1-> Text=Form1-> Memo1-> Text+IntToStr(i)+ "我得到了参数--我的线程\r\n ";

[解决办法]
VCL组件 决大部分都不是 线程安全的 所以应该防在Synchronize里调用
[解决办法]
Synchronize 调用
[解决办法]
或者 用 postmessage sendmessage

你就传个 整数 i 而已

热点排行