当前位置:编程学习 > C#/ASP.NET >>

怎么在异步通信中实现event和delegate

我是个委托和事件的新手,请各位大侠指导下我以下的问题,谢谢

我有个类声明了事件和委托
//接口方法
void StatusQryReq(string requesterNumber, StatusCheckResp status);
//委托
public delegate void StatusCheckResp(bool bFlag, string strStatusCheckResp);
//事件
public event StatusCheckResp StatusCheckEvent;

以下是我的异步ReadCallback
public void AcceptCallback(IAsyncResult ar)
        {
            allDone.Set();

            Socket listener = (Socket)ar.AsyncState;
            Socket handler = listener.EndAccept(ar);

            StateObject state = new StateObject();
            state.workSocket = handler;
            handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                new AsyncCallback(ReadCallback), state);
        }

        public void ReadCallback(IAsyncResult ar)
        {
            if (ar.IsCompleted)
            {
                StateObject state = (StateObject)ar.AsyncState;
                Socket handler = state.workSocket;

                int bytesRead = handler.EndReceive(ar);

                if (bytesRead > 0)
                {
                    state.sb.Append(Encoding.ASCII.GetString(
                        state.buffer, 0, bytesRead));

                    string strRespReqNum = rowaDataFactory.parseRowaCmd(state.sb.ToString());
                    string strCallbackEvent = callbackMgmt.GetCallbackEvent(strRespReqNum);

                    //以下怎么去写事件和那个委托进行绑定?
                }
            }
        } 通信 asynchronous delegate event --------------------编程问答--------------------

if(StatusCheckEvent!=null)
{
    StatusCheckEvent(true,"str");
}
--------------------编程问答--------------------
引用 1 楼 feng41602213 的回复:

if(StatusCheckEvent!=null)
{
    StatusCheckEvent(true,"str");
}

在调用AcceptCallback之前注册StatusCheckEvent事件就行了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,