1。好象没有别的好的方法,但为什么每次都要产生一个新的窗口呢?不能保持一个窗口变量,需要时显示,如果已经显示时,不可以添加到现有窗口?2。在主线程能打开这窗口么?这窗口是在标记为[STAThread]的主线程上生成的么?http://support.microsoft.com/?id=841295

解决方案 »

  1.   

    我不知道事件处理是不是和直接this.Invoke( watcherHandler,sms); 一回事?
    你可以试试事件
    //委托
    public delegate void DisconnectedHandler ( Client sender ) ;
    //事件
    public event DisconnectedHandler Disconnected ; if ( Disconnected != null ) 
    {
    //Invokes the delegates.
    Disconnected ( this ) ; 
    }
      

  2.   

    1.对接收消息的看法:
    查看消息的方式可以象MSN messager那样啊,针对连接,而不针对消息。这就象 saucer(思归)说的那样处理了。所以,在客户端主进程与会话进程间,传递的不是消息,而是连接。
      

  3.   

    嗯,楼上的大侠们所言及是。我原来已经定义了一个消息窗体管理列表,用来标识与某聊天对象的唯一窗体,只是发送结束后,把它关闭了并从消息窗体管理列表里删除了,呵呵,其实不必关闭,下次还可能有用到,思归所讲的:) 关于“daou101”所讲的
    *查看消息的方式可以象MSN messager那样啊,针对连接,而不针对消息”*
     我不太明白? 在客户端里 主进程与会话进程间,传递的不是消息,而是连接?
    我的架构是这样的,大体上可以分三层1:类BaseClient: 包含以下模块
                     负责TCP/UDP数据接发--->消息列队--->消息事件触发器--->(虚方法)相应消息的 操作行为2:主窗体MainWin: 继承BaseClient,重写父类相应消息的操作行为3: 功能子窗体:被主窗体MainWin调用,根据不同消息打开相应的子窗体(比如查看好友消息、个性设置等)所以整个系统都是以消息传递为主线,daou101(海天一鸥),能解释你的想法吗?                                
      

  4.   

    大侠们,帮忙看看
    http://community.csdn.net/Expert/topic/3484/3484531.xml?temp=3.069705E-02