delphi 简单线程问题

beginthread方法打开一个线程怎么同步vcl我知道重写tthread能在execute用synchronize来同步vcl但是我用beginthread方法不知道... beginthread方法打开一个线程 怎么同步vcl
我知道重写tthread能在execute用synchronize来同步vcl
但是我用beginthread方法不知道怎么同步,麻烦各位高手告诉我下
展开
 我来答
百度网友09d4ae1
2011-06-01 · TA获得超过267个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:203万
展开全部
用临界区来同步 ,你把线程函数里要同步的主要代码前后加临界区

先声明一个TRTLCriticalSection类型的全局变量

var
MyCs:TRTLCriticalSection;

在程序开始或建立线程之前,初始化

InitializeCriticalSection(MyCs);//初始化临界区

在程序结束或所有线程结束后,删除它

DeleteCriticalSection(MyCs);//删除临界界

再在线程中要同步的地方加入

EnterCriticalSection(MyCs); //进入临界区
try
//要同步的程序代码
finally
LeaveCriticalSection(MyCs); //离开临界区
end;
追问
我在
EnterCriticalSection(MyCs); //进入临界区
try
showmessage('ff');
finally
LeaveCriticalSection(MyCs); //离开临界区
这样就报错了 该怎么办哥们
追答
报的什么错 ,我估计是showmessage的问题,在线程里不要用这个提示框,他是Delphi专为UI写的提示框,与FORM联系紧密,你改成Messagebox提示应该就OK了

showmessage('ff');
改成
messagebox(0,'ff','caption',0);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式