private void ClientConn(object sender, Begin.NetEventArgs e)
        {
            Begin.NetEvent ClientConn = delegate(object oSender, Begin.NetEventArgs E)
            {
                string info = string.Format("A Client:{0} connect server Session:{1}. Socket Handle:{2}",
             E.Client.ClientSocket.RemoteEndPoint.ToString(),
             E.Client.ID, E.Client.ClientSocket.Handle);                rtbContent.AppendText(info + DateTime.Now.ToString() + "\r\n");            };
            rtbContent.Invoke(ClientConn, sender, e);        }
自定义事件;
如果是这个事件是窗体自带的可以这样编写: private void ClientConn(object sender, Begin.NetEventArgs e)
        {
           
             string info = string.Format("A Client:{0} connect server Session:{1}. Socket Handle:{2}",
             e.Client.ClientSocket.RemoteEndPoint.ToString(),
             e.Client.ID, e.Client.ClientSocket.Handle);
             rtbContent.AppendText(info + DateTime.Now.ToString() + "\r\n");            
        }这个为什么这样,感觉自定义事件绑定的方法不是很好,有没有什么更好的替代方法?谢谢

解决方案 »

  1.   

    就是在自己的类中指定了事件,然后在窗体中绑定自己的时间处理方法,当这个方法包含对当前窗体操作时,就要委托执行.我的意思有没有更好的方法 不使用委托,就像private void ClientConn(object sender, Begin.NetEventArgs e)
            {
               
                 string info = string.Format("A Client:{0} connect server Session:{1}. Socket Handle:{2}",
                 e.Client.ClientSocket.RemoteEndPoint.ToString(),
                 e.Client.ID, e.Client.ClientSocket.Handle);
                 rtbContent.AppendText(info + DateTime.Now.ToString() + "\r\n");            
            }执行
      

  2.   

    如果你的处理程序不涉及子线程更新UI线程 那不用Invoke
      

  3.   

    public event eventhandler(你的事件类型) DefineEvent;
    然后在类外面可以订阅此事件,
    如下:classinstance.DefineEvent(object sender,EventArgs e)
    {
    .......
    }类中可以这样解发:
    protecte virtual void OnDefineEvent(eventargs e)

     eventhandler eh=DefineEvent;
     if(eh!=null)

     eh(this,e);
    }
    }在你的类中适当的地方写上相应的OnDefineEvent(EventArgs.Empty);就可以了;