我的程序有网络和界面两块,网络层负责接收和发送消息,提供接口给界面调用发送消息出去,接收到消息后通知界面处理消息,请问通信线程和界面之间的通信我该怎么实现?

解决方案 »

  1.   

    向界面发送消息。用PostMessage(不等待)或SendMessage(等待)。
    如果要等待UI线程理完毕,也可以用TThread的Synchronize方法。
      

  2.   

    我曾经用delphi做过一个两层结构的系统,下层是用c++编的一个dll,提供了一些函数从硬件读取数据,而上层则定时调用这些函数,读取数据,一方面把读上来的数据放进数据库,一方面在界面上显示分析图表。上微机有八个线程,同时监听8个通道的数据,并且同事在8个窗体上显示分析图表,应该跟你这个系统比较相近吧。关于上位机和下位机到底是谁调谁的问题,我们尝试了两种方案,一是通道有数据传上来,上位机就接受并存盘并刷新相应窗体的图表,另一是上位机定时调用dll里的函数读取数据,后一种只要在界面的窗体上加一个timer控件,定期读取数据就可以。我们用的就是后一种方案。如果用的一种方案,你可能需要自己定义一个事件,其触发条件是你的网络层受到消息,让后调用界面层作相应处理。希望对你有帮助。