请教多线程操作多个窗口的问题
时间:2011-11-25
来源:互联网
比如4个线程,每个线程操作一个画图程序,我现在只能有一个线程可以正常用,用threadvar把要操作的窗口句柄声明为全局变量了,可是句柄的值好像还是每个线程都可以访问,以至于窗口的句柄被改变了,请高手赐教~!!
implementation
threadvar
Ghwnd : Thandle; //声明句柄为全局变量
procedure qidongxc();
begin
TTestThread.Create(false); //启动第一个线程
TTestThread.Create(false); //启动第二个线程
TTestThread.Create(false); //启动第三个线程
TTestThread.Create(false); //启动第四个线程
end;
procedure TTestThread.Execute;
begin
chuangkoujubing(); //调用获得窗口句柄过程
kaishihuatu(); //开始在画图程序上画图
end;
现在只能有一个画图窗口在正常操作。
是不是用是threadvar来声明变量的话,就不用考虑线程同步的问题了,我没有操作该程序上的VCL组件。谢谢大家,如果我的做法不对,请指正,我就是像研究一下,利用多线程操作多个窗口,且在窗口中执行操作的过程也都是一样的,请教实现上面说的功能,应该怎么合理的使用线程呢,我自己闷头已经研究大概4天了,哎,还是没有搞定,希望高手点拨一下,谢谢~!!
implementation
threadvar
Ghwnd : Thandle; //声明句柄为全局变量
procedure qidongxc();
begin
TTestThread.Create(false); //启动第一个线程
TTestThread.Create(false); //启动第二个线程
TTestThread.Create(false); //启动第三个线程
TTestThread.Create(false); //启动第四个线程
end;
procedure TTestThread.Execute;
begin
chuangkoujubing(); //调用获得窗口句柄过程
kaishihuatu(); //开始在画图程序上画图
end;
现在只能有一个画图窗口在正常操作。
是不是用是threadvar来声明变量的话,就不用考虑线程同步的问题了,我没有操作该程序上的VCL组件。谢谢大家,如果我的做法不对,请指正,我就是像研究一下,利用多线程操作多个窗口,且在窗口中执行操作的过程也都是一样的,请教实现上面说的功能,应该怎么合理的使用线程呢,我自己闷头已经研究大概4天了,哎,还是没有搞定,希望高手点拨一下,谢谢~!!
作者: a80141783 发布时间: 2011-11-25
线程里访问窗口要用synchronize,或者发消息给窗口,让窗口自己画。
作者: lght 发布时间: 2011-11-25
引用 1 楼 lght 的回复:
线程里访问窗口要用synchronize,或者发消息给窗口,让窗口自己画。
线程里访问窗口要用synchronize,或者发消息给窗口,让窗口自己画。
你说的画图是不是在delphi创建的那个FORM里面画啊?我说的画图是在“开始--程序--附件”里的那个画图程序里面画。
作者: a80141783 发布时间: 2011-11-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28