传动态改变的参数(环境变量)有几个方法,
1)你可以设置一个全局变量,然后ThreadFunc执行的时候就不停验测这个全局变量就行。
2)用sendthreadmessage这个API发个消息给thread,参数的指针就放在消息的参数里,然后在thread里用peekmessage把相应的消息取出来,再用得到的指针去访问相应的参数也行。
3)用内存映射文件实现。一般来说没这个必要。用API建立的thread执行完只会把ThreadFunc所占用的内存释放掉,但ThreadFunc里由代码所分配的内存不会自动释放。如果你是用delphi,应该用Delphi的TThread对象,没必要用API自己建立一个Thread。
1)你可以设置一个全局变量,然后ThreadFunc执行的时候就不停验测这个全局变量就行。
2)用sendthreadmessage这个API发个消息给thread,参数的指针就放在消息的参数里,然后在thread里用peekmessage把相应的消息取出来,再用得到的指针去访问相应的参数也行。
3)用内存映射文件实现。一般来说没这个必要。用API建立的thread执行完只会把ThreadFunc所占用的内存释放掉,但ThreadFunc里由代码所分配的内存不会自动释放。如果你是用delphi,应该用Delphi的TThread对象,没必要用API自己建立一个Thread。
解决方案 »
- 如何在webbrowser控件中屏蔽字体自动下载窗口和动态页面窗口刷新时弹出的提示窗口。
- 关于ReadOnly的问题
- 怎样才能去掉stringgrid中背选中筐的虚线 急!!!!!!!!!!
- 不解问题2:请高手帮忙?
- 菜烏再問﹕如何應用動態庫中的函數
- dbgrid中用回车键代替Tab键
- 新手上路,一个richedit的问题!如何在richedit的任意位置插入字符;连续undo如何处理?
- 压缩 与 显示 jpeg 的有关问题-------->>>>>>>>>>>
- 如何验证一个时间(如20:12:12)或者日期(02-2-2)的合法性?
- Interbase有用嗎?誰能告訴我?
- help me 急!!!!
- 谁懂如何开发IE插件!?????????????
时,线程对象在结束时资源自动释放掉
begin
var i:integer;
begin
for i:=1 to 10000 do
Form1.lable1.Caption:=inttostr(i);
end;
procedure ThreadFunc2();
var i:integer;
begin
for i:=1 to 10000 do
Form1.lable2.Caption:=inttostr(i);
end;procedure TFORM1.button1click(Sender:TObject)
var Tid1,Tid2:DWORD;
begin
CreateThread(nil,0,@ThreadFunc1,nil,0,Tid1);
CreateThread(nil,0,@threadFunc2,nil,0,Tid2);
end;
为什么到4000多的时候就会出现错误呀?是不是因为DELPHI的VCL不支持多线程呀?
要使用同步技术
var i:integer;
begin
for i:=1 to 10000 do
Form1.label1.Caption:=inttostr(i);
end;procedure ThreadFunc2();
var i:integer;
begin
for i:=1 to 10000 do
Form1.label2.Caption:=inttostr(i);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Tid1,Tid2:DWORD;
begin
CreateThread(nil,0,@ThreadFunc1,nil,0,Tid1);
CreateThread(nil,0,@threadFunc2,nil,0,Tid2);
end;我试了,没问题啊
是不是就是DELPHI的VCL控件的原因呀?但是我是访问不同的控件呀,可不可以讲清楚一点呀?
TO DepYuka() :
我只是试验一下WIN API函数而已,并不是不愿用DELPHI自已的东西