首页
社区
课程
招聘
未解决 [悬赏]【求助】多线程,进程之间通讯问题,同时刷新vcl,附delphi源码 10.00雪花
发表于: 2017-6-10 11:09 2696

未解决 [悬赏]【求助】多线程,进程之间通讯问题,同时刷新vcl,附delphi源码 10.00雪花

2017-6-10 11:09
2696

工程内有主程序和副程序两个exe。

希望功能如下

1、主程序单独创建线程,让主程序在主线程上刷新界面上的vcl组件

2、副程序单独创建线程,让主程序在主线程上刷新界面上的vcl组件

3、主程序和副程序同时创建线程,让主程序在主线程上刷新界面上的vcl组件


主要第三点没法处理,希望有好心大神能帮帮忙解决一下谢谢

附件有工程源码


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 3622
活跃值: (2559)
能力值: ( LV6,RANK:83 )
在线值:
发帖
回帖
粉丝
2
暂时只有C++Builder开发环境,没有delphi的,但是VCL界面控件本来就应该在主线程上刷新,可以通过消息方式,做的好一些可以通过队列缓存消息做优化,以免消息太多时界面死掉。
2017-6-18 23:15
0
雪    币: 289
活跃值: (67)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在线程处理完事物后,用WM_COPYDATA通知主程序,不一定要在线程里通知主程序吧。

function  SendToServer(const  s:string):Integer;      //与管理器通讯
var  cdds  :  TCopyDataStruct;
begin
        Result:=0;
        if(IsWindow(m_CopyDataInfo.hWnd)=False)and(m_ManageCaption<>'')then  begin
                m_CopyDataInfo.hWnd:=FindWindow(nil,PChar(m_ManageCaption));
        end;
        if(m_CopyDataInfo.hWnd=0)  then  Exit;
        m_CopyDataInfo.Memo:=s;
        cdds.dwData  :=  0;
        cdds.cbData  :=  SizeOf(m_CopyDataInfo)+1;
        cdds.lpData  :=  @m_CopyDataInfo;
        Result:=SendMessage(m_CopyDataInfo.hWnd,WM_COPYDATA,0,LongWord(@cdds));
end;

主程序可以把自身的窗口句柄传递给新创建的程序,或用Findwindow查找主程序的窗口句柄。
2017-10-1 18:45
0
雪    币: 3622
活跃值: (2559)
能力值: ( LV6,RANK:83 )
在线值:
发帖
回帖
粉丝
4

终于忍不住装了Delphi测试下VCL的同步问题,这么久的帖,不知道lz还能不能看到.
上传的附件:
2017-10-17 15:28
0
游客
登录 | 注册 方可回帖
返回
//