public int CaptchaDeal(ref string strCheckCode)
        {
            try
            {
                CLog.WriteLog("CaptchaDeal start");
                string url = "http://*****"; //获取一个图片                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Method = "GET";
                request.Accept = "*/*";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream responseStream = response.GetResponseStream();                int nStatus = response.StatusCode.GetHashCode();                int streamLength = 1024 * 1024;
                byte[] fileData = new byte[streamLength];                int nLenth = 0;
                int offset = 0;                nLenth = responseStream.Read(fileData, 0, streamLength);
                while (nLenth > 0)
                {
                    offset += nLenth;
                    nLenth = responseStream.Read(fileData, offset, streamLength - offset);
                }                byte[] buf = new byte[offset];
                Array.Copy(fileData, 0, buf, 0, offset);                responseStream.Close();                response.Close();                strCheckCode = "ABCEDF";                return 0;
            }
            catch
            {
                return 2;
            }        }
问题:  
----------------------------------------------------
当执行上面函数后, 再执行另外一个相似函数, 会抛异常当执行上面函数后, sleep下,再执行另外一个相似函数, 不会抛异常直接执行另外一个相似函数, 不会抛异常
------------------------------------------------------我感觉就是上面代码有问题,  谁帮我看看

解决方案 »

  1.   

    当执行上面函数后, 再执行另外一个相似函数, 会抛异常当执行上面函数后, sleep下,再执行另外一个相似函数, 不会抛异常直接执行另外一个相似函数, 不会抛异常看样子应该是资源访问冲突了,你说的另外一个相似函数贴出来看看吧
      

  2.   

    CLog.WriteLog("CaptchaDeal start");这句
      

  3.   


           //返回 0 成功注册 1 帐户错误 2 网络不通 3 验证码错误 4登陆次数过多 
            public int RegPost(ref TAccountInfo tAccountInfo)
            {            CLog.WriteLog("RegPost start");            string url = "http://***";            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.Headers.Add("Accept-Language", "zh-CN");            request.ServicePoint.Expect100Continue = false;
                request.CookieContainer = m_cookieContainer;            //填充要post的内容
                string strPostData = "***";            byte[] bytesToPost = Encoding.ASCII.GetBytes(strPostData);
                request.ContentLength = bytesToPost.Length;
                //request.AllowAutoRedirect = false;            Stream requestStream = null;            try
                {
                    requestStream = request.GetRequestStream();
                    requestStream.Write(bytesToPost, 0, bytesToPost.Length);
                }
                catch
                {
                    if (requestStream != null)
                    {
                        requestStream.Dispose();
                    }
                    request.Abort();                CLog.WriteLog("RegPost end 1");                return 2;
                }            requestStream.Close();            int nStatus = 0;            try
                {
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();                nStatus = response.StatusCode.GetHashCode();                Stream responseStream = response.GetResponseStream();                StreamReader readStream = new StreamReader(responseStream, System.Text.Encoding.UTF8);
                    string page = readStream.ReadToEnd();
                    response.Close();                CLog.WriteLog("RegPost end 2");                //如果登陆失败,分析原因
                    //分析结果
                    if (IsYZMWrong(ref  page))
                    {
                        return 3;// 验证码错误      
                    }
                    else if (IsLoginSuccess(ref  page))//成功
                    {
                        return 0;
                    }
                    else
                    {
                        return 1;// 帐户密码错误
                    }
                }
                catch
                {
                    CLog.WriteLog("RegPost end 3");
                  
                    request.Abort();
                    return 2;
                }
            }
    贴了, 另外调试情况下也没有问题
      

  4.   

    response和responseStream的声明放在try外边,在catch中判断是否为null,不为null就关闭
      

  5.   


    当执行上面函数后, 再执行另外一个相似函数, 会抛异常 //CLog.WriteLog("RegPost end 3"); 当执行上面函数后, sleep下,再执行另外一个相似函数, 不会抛异常//CLog.WriteLog("RegPost end 2");
    直接执行另外一个相似函数, 不会抛异常//CLog.WriteLog("RegPost end 2");
      

  6.   

    我刚才测试一下,没有抱错。我不知道你的函数有多相似,我改变了URL
      

  7.   

    catch(Exception ex)
    {
    CLog.WriteLog(ex.ToString());
    }
    看看到底是什么错呢………………