多次调用异步回调函数(C#)

时间:2012-08-13 15:58:46

标签: c#

这是一个用于通过AsyncCallback函数处理HttpWebRequest的代码片段。 服务器端响应很好。它只响应一条返回消息,但是这个客户端代码被多次调用并且让人头疼。

//创建请求             HttpWebRequest request =(HttpWebRequest)WebRequest.Create(requestUri);

        try
        {
            // Make request with the following inline Asynchronous callback
            request.BeginGetResponse(new AsyncCallback((asynchronousResult) =>
                {
                    HttpWebRequest aRequest = (HttpWebRequest)asynchronousResult.AsyncState;
                    HttpWebResponse aResponse = (HttpWebResponse)aRequest.EndGetResponse(asynchronousResult);

                    using (StreamReader streamReader = new StreamReader(aResponse.GetResponseStream()))
                    {
                        // Deserialize the result
                        string jsonString = streamReader.ReadToEnd();
                        result = DeserializeToListOfObject(jsonString);

                        JavaScriptSerializer jS = new JavaScriptSerializer();
                        result = (List<object>)jS.Deserialize<List<object>>(jsonString);

                        if (result[0] is object[])
                        {
                            foreach (object message in (object[])result[0])
                            {
                                this.ReturnMessage = message;
                            }
                        }

我得到了相同的返回消息。 有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

看似行中的问题

request.BeginGetResponse(new AsyncCallback((asynchronousResult) => {}

MSDN描述了异步请求和响应的正确实现

注意这一行:

IAsyncResult result=
        (IAsyncResult) myHttpWebRequest.BeginGetResponse(new AsyncCallback(RespCallback),myRequestState);

希望这有帮助。