子线程怎样在主线程的memo里添加一行记录啊?急问,参与有分。。。 我的程序: 主线程下有两个子线程, 每个子线程会调用一个函数, 每个函数会根据不同的输入值在进行一定的处理之后在主线程的memo中输出对应的信息。但,多线程中操作主线程的vcl控件经常会出错,我的程序也经常报内存冲突。 我不知道改怎么解决啊我知道用synchronaze可以解决,但synchronaze不能加参数的,我该怎么进行值传递呢?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你写个线程类的成员函数,在里面再调用外部VCL类的成员,这时候就可以带上值传递了 在下曾经写过一个线程类可以很好的解决这个问题。首先在私有函数中定义一个私有变量FContl :Tmemo然后再定义一个同步函数,在同步函数中对VCL控件进行读写,然后用synchronaze来调用同步函数即可。如果有兴趣可以参阅http://dev.csdn.net/article/32/32956.shtm正好可以解决你的问题。 创建性程的时候,传入对应memo的串口的handle,然后,在线程直接向该handle发消息就可 如果有多個線程要更新主form的一些控件的信息, 一般我是用消息傳送來統一處理, 也就是說,將線程要更新的東西,直接發消息到 Form , 然後, 由Form接收, 處理顯示的部分!用PostMessage(FormHandle, WM_USER + 1, 0, integer(pchar(string)));FormHandle可在線程創建的時候傳進去, 或用其它方法傳進去WM_USER + 1 是自己定義的, 只要兩邊統一就好0, 也可設成你需要的string 就是你要傳的字符信息了 同意aiirii的说法用消息来处理 偶是菜鸟,如果用偶菜鸟的办法来做的话就是这样的:定义一个全区的String,和一个标志变量(用int吧)然后各线程在标志不为1时,将输出的信息放入String,输出后标志变量变成1(如为1等待)。主线程间隔一定时间将String输出到Memo中,输出完后将标志置为0。我想,我这个方法应该不会有问题。 delphi 想跳出一个函数的执行用什么语句? 怎样修改Delphi的Ctrl+Space快捷键 请教TServerSocket问题 升星,放分 数据导入问题 请指教! 求Richview 11以上含源码 大哥、大姐行行好,帮帮我这个菜鸟 文件拖放问题(50分) quickrep打印? 使用InterBase数据库 版本升级的问题 建议斑主封杀反动分子--Eysoft(小伙子),支持者请进!!
首先在私有函数中定义一个私有变量FContl :Tmemo
然后再定义一个同步函数,在同步函数中对VCL控件进行读写,
然后用synchronaze来调用同步函数即可。
如果有兴趣可以参阅http://dev.csdn.net/article/32/32956.shtm
正好可以解决你的问题。
然后,在线程直接向该handle发消息就可
如果有多個線程要更新主form的一些控件的信息, 一般我是用消息傳送來統一處理, 也就是說,將線程要更新的東西,直接發消息到 Form , 然後, 由Form接收, 處理顯示的部分!用PostMessage(FormHandle, WM_USER + 1, 0, integer(pchar(string)));FormHandle可在線程創建的時候傳進去, 或用其它方法傳進去
WM_USER + 1 是自己定義的, 只要兩邊統一就好
0, 也可設成你需要的
string 就是你要傳的字符信息了
用消息来处理