日期:2014-05-17  浏览次数:20997 次

异步读http数据时候发生的一个问题
我在网上找了一个 异步类 
用BeginGetResponse和BeginRead 来异步读数据

然后我在成功完成后和 异常时候都触发一个事件

但是现在发现我调用这个类的时候, 多次引发事件. 怎样才能保证发生错误后 只会引发一个错误事件?

代码如下

using System;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;

//http://api.map.baidu.com/geocoder?output=json&location=xxxxxx,xxxxxx&key=37492c0ee6f924cb5e934fa08c6b1676
//URLEncoder.encode
namespace ManagerServer
{



    public class HttpWebRequest_BeginGetResponse
    {



        public class RequestState
        {
            //   This   class   stores   the   State   of   the   request.
            const int BUFFER_SIZE = 1024;
            public System.Text.Encoder CharacterSet;
            public StringBuilder requestData;
            public byte[] BufferRead;
            public HttpWebRequest request;
            public HttpWebResponse response;
            public Stream streamResponse;
            public RequestState()
            {
                BufferRead = new byte[BUFFER_SIZE];
                requestData = new StringBuilder(" ");
                request = null;
                streamResponse = null;
            }
        }

        public static ManualResetEvent allDone = new ManualResetEvent(false);
        const int BUFFER_SIZE = 1024;
        const int DefaultTimeout = 2 * 60 * 1000;   //   2   minutes   timeout

    
        public delegate void ReadOverHandler(StringBuilder requestData, object exobject);
        //public delegate void ReadOverHandler(StringBuilder requestData,int smstype);
        public event ReadOverHandler ReadOver;
        public object smstype = 0;

&nbs