小弟是新手,关于多线程的问题,大虾帮忙啊,,
ie521 2006-04-27 09:01:16 小弟刚刚接触BCB多线程编程,在网上看了些例子,按如下步骤做多线程:
窗体上有一个按钮,button1 ,测试的效果是:
当单击Button1时在窗体的指定位置一直写数字,0-1000000
单线程时,我的Button1的单击事件是这样写的,
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HDC DC=GetDC(Form1->Handle);
for(int i=0;i<1000000;i++){
String s=i;
TextOut(DC,10,10,s.c_str(),s.Length());
}
ReleaseDC(Form1->Handle,DC);
}
没有问题的,但是当执行代码时,窗体界面就不能对用户操作响应了(不能移动窗体,不能最小化等)。
所以小弟也用一个独的线程来执行上面的代码,这样主线程还可以对用户的操作进行响应。
也就是要在单击Button1时,启用一个新的线程还在窗体的指定位置写数字,0-1000000
开始如下操作,
1,选择 "File" → "New" → "Other" → "Thread Object",
2, 在弹出的窗口中的 "Class Name" 中填 "MyThread",点OK,
这时程序好像是自动添加了两个文件,Unit2.cpp和Unit2.h,
在Unit2.cpp中有
void __fastcall NewThread::Execute()
{
//---- Place thread code here ----
}
我把它改成了我要执行的任务,
void __fastcall NewThread::Execute()
{
HDC DC=GetDC(Form1->Handle);
for(int i=0;i<1000000;i++){
String s=i;
TextOut(DC,10,10,s.c_str(),s.Length());
}
ReleaseDC(Form1->Handle,DC);
}
然后要做的就是当点击Button1时,来启用这个线程了,但是接下来的操作小弟就不会了,,,
烦请大虾赐教啊,,,