你说的基本是这个意思。它的目的是避免多个子线程同时访问主线程资源。
示例:
procedure ServerThread.ListItemEnd; //子线程的一个方法
begin
if (ListItem <> nil) then
ListItem.SubItems.Strings[3] := '传送完毕'; //ListItem是主线程的一个TreeView的一行
end;procedure ServerThread.ClientExecute; //子线程执行
begin
Synchronize(ListItemEnd);
//如果直接写ListItemEnd,可能发生冲突。
end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————
示例:
procedure ServerThread.ListItemEnd; //子线程的一个方法
begin
if (ListItem <> nil) then
ListItem.SubItems.Strings[3] := '传送完毕'; //ListItem是主线程的一个TreeView的一行
end;procedure ServerThread.ClientExecute; //子线程执行
begin
Synchronize(ListItemEnd);
//如果直接写ListItemEnd,可能发生冲突。
end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————
解决方案 »
- wise打包,安装程序时拖动窗口就会有重影,像死机一样!
- 有在東莞城區附近樂意兼職Delphi的嗎?
- 报表中显示自己加入的内容
- 谁有 devexpress cxGrid 4.5 的整套控件包和源码?
- 如何能不弹出webbrowser访问网页时有时出现的脚本错误对话框?
- 在窗体建立事件中为什么不能画图?
- 一个时间求算的问题
- 新来,散分,只收若干个人,呆会再来结贴,便便去先
- 请问哪里有关于“方案销售”的文章可以参考?100分相送(在现等待。。。。。。)
- 散分 了,祝大家节日快乐。
- 请问怎么得到DBGrid中的数据内容?
- 哪里有InstallShield Express Custom Edition for Delphi 下载?
2。当创建一个线程时,vcl会在主线程中创建一个隐含的线程窗口,这个窗口的作用就是把synchronize调用的访问vcl的方法排队.synchronize把Method参数传递过来的方法保存在thread的fmethod字段中然后给线程窗口发一个cm_execproc消息,并把消息的lparam参数设为self,当线程窗口收到这个消息时,就调用Fmethod所制定的方法.
2.如何获得线程的ID号
thx
2.如何获得线程的ID号
================================
1、可以
2、TThread.ThreadID
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————
VCL有一个缺陷就是不支持多线程访问..
为了弥补这一缺陷borland使用了synchronize这一方法控制对VCL的并发访问