delphi 多线程编程问题

我在线程单元中的Execute中直接更新主窗体中的变量与在线程中调用Synchronize函数更新主窗体中的变量有何区别?我直接在Execute中更新我看也可以呀,为什么... 我在线程单元中的 Execute 中直接更新主窗体中的变量
与在线程中调用Synchronize 函数更新主窗体中的变量有何区别?我直接在Execute 中更新我看也可以呀,为什么一定要在线程的Execute 调用Synchronize 来更新呢?
展开
 我来答
mit1208
2011-09-27 · TA获得超过2347个赞
知道大有可为答主
回答量:2743
采纳率:0%
帮助的人:1860万
展开全部
多线程中使用方法注意以下几点就可以了!
1.在更新VCL控件的时候使用Synchronize.
2.如果线程内定义了全局变量,如果想修改它的话,一般常用临界,如果是多进程方式同步的话使用互斥等....
3.你所说的使用synchonrize和不使用synchronize结果一样,没有什么区别.!这是在单个线程中没有发现问题,如果多个线程同时运行此段代码就会出现内存写入和读取错误了!
更多追问追答
追问
首先我在我的程序里面只建立了一个线程单元,如果我在线程中的定义函数a 调用别的单元或窗体中的ADOConnection,然后再进行对数据库的查找,根据查找情况,在线程的Execute中直接对别的窗体中的edit 内容进行更新。这样做合适吗?
追答
不合适,我上边说过了,操作VCL控件要用Synchronize,如果不想用可以自定义消息也行!
在对数据库查找的时候也要使用同步.
luckyso111
2011-09-27 · TA获得超过208个赞
知道大有可为答主
回答量:261
采纳率:0%
帮助的人:234万
展开全部
我最近写的软件里就用到了多线程,其实你要是只更新主窗体中的变量,不用Synchronize直接就行 ,但要是想更新主窗体中的控件时,最好就用Synchronize才不会出问题...
还可以用 CS: TCriticalSection; 来控制同步.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fyg246
2011-09-27 · TA获得超过862个赞
知道小有建树答主
回答量:1296
采纳率:33%
帮助的人:380万
展开全部
建议用线程类吧,子线程与主程序之间用消息进行勾通。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式