第一个问题:在线程中,最好不好操作界面。 我只是知道这个理论,至于为什么在线程中不能操作界面呢?第二个问题:在一个主备系统中,主备运行同样的软件。主机上有个LISTBOX里面有很多条目,将这个条目信息打包,然后主机通过UDP发送到备机之后,备机解析条目信息,然后添加到备机的LISTBOX中。对于备机来说,UDP的接收线程 收到包之后,回调到界面。在此,就需要更新界面。(以到达备机的LISTBOX信息与主机相同)如果,不在UDP接收线程中更新界面的话,请问下,对于这个问题,应该如何解决呢?

解决方案 »

  1.   

    把接受到的数据放在一缓冲区
    从UDP接收线程获得界面的窗口句柄
    然后发送刷新消息。
    让界面的主线程从接受数据的缓冲区读数据自己更新界面
      

  2.   

    1.主要是对于一些界面的MFC对象等,需要做线程同步处理等,所以简单的方法就是发送消息给主线程来操作UI
    2.接收数据后,发送消息给主线程,同时可以带上界面要更新的数据,主线程中得到数据,然后更新ui
      

  3.   

    谢谢各位的关注。我是楼主,如果按照以下方法的话:2.接收数据后,发送消息给主线程,同时可以带上界面要更新的数据,主线程中得到数据,然后更新ui。要是软件运行的过程中,有很多种需要同步的信息,就需要定义很多种不同的消息。比如,一个消息是,某个CHECKBOX打钩,
    一个消息是LISTBOX信息变化,等等!那对于这个问题,有没有什么好的解决办法呢?
      

  4.   

    Windows窗口管理的代码有些是不可重入的,如果一个线程工作到一半被调度器挂起,另外一个线程又调用到这些不可以重入的代码就会有问题。