HttpWebRequest.GetRequestStream()在第二次尝试后暂停(异步)c#

HttpWebRequest.GetRequestStream()在第二次尝试后暂停(异步)c#,c#,unity3d,stream,httpwebrequest,C#,Unity3d,Stream,Httpwebrequest,我的环境版本是2.0,我目前使用的是Unity 5.5,c#。 第三次尝试获取HttpWebRequest请求流时,我遇到了一个暂停 我想要实现的是有一个“重试”机制:当我发送请求时,我等待响应,如果超时,我发送另一个请求并刷新超时时间。当我点击MAX_尝试或其中一个请求得到响应(即使是来自超时的请求)时,我停止这个循环 处理此循环的代码如下所示: IEnumerator DoRequest() { List<IAsyncResult> results

我的环境版本是2.0,我目前使用的是Unity 5.5,c#。 第三次尝试获取HttpWebRequest请求流时,我遇到了一个暂停

我想要实现的是有一个“重试”机制:当我发送请求时,我等待响应,如果超时,我发送另一个请求并刷新超时时间。当我点击MAX_尝试或其中一个请求得到响应(即使是来自超时的请求)时,我停止这个循环

处理此循环的代码如下所示:

    IEnumerator DoRequest()
    {
        List<IAsyncResult> results = new List<IAsyncResult>(MAX_ATTEMPTS);
        int attemptNumber = 1;
        while (attemptNumber <= MAX_ATTEMPTS)
        {
            IAsyncResult result = null;
            try
            {
                result = SendRequest();
            }
            catch (Exception e)
            {
                ProcessException(e);
                yield break;
            }

            if (result != null)
            {
                results.Add(result);
                DateTime timeOutTime = DateTime.UtcNow + TIMEOUT;
                yield return null;
                while (DateTime.UtcNow < timeOutTime)
                {
                    int completedIndex = -1;
                    if (IsAnyResultCompleted(results, out completedIndex) == true)
                    {
                        ProcessResponse(results[completedIndex]);
                        yield break;
                    }
                    else
                    {
                        yield return null;
                    }
                }

            }
            attemptNumber++;
        }

        if (results.Count != 0)
        {
            ProcessResponseFail("Timed out");
        }
        else
        {
            ProcessResponseFail("Unable to generate a request");
        }
    }
“onResponse”是一个缓存委托,它被分配给以下对象:

    void OnResponse(IAsyncResult asynchronousResult)
    {

        try
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
            request.EndGetResponse(asynchronousResult);

        }
        catch (WebException e)
        {
            string responseStream;
            using (var streamReader = new StreamReader(e.Response.GetResponseStream()))
            {
                responseStream = streamReader.ReadToEnd();
            }

            Utility.Console.LogError(responseStream);
        }
    }
我很清楚,并且我也尝试设置ServicePointManager.DefaultConnectionLimit=1000000,但在SendRequest中的两个发送请求GetRequestStream()暂停5秒后,结果总是一样的,我不明白为什么

    void OnResponse(IAsyncResult asynchronousResult)
    {

        try
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
            request.EndGetResponse(asynchronousResult);

        }
        catch (WebException e)
        {
            string responseStream;
            using (var streamReader = new StreamReader(e.Response.GetResponseStream()))
            {
                responseStream = streamReader.ReadToEnd();
            }

            Utility.Console.LogError(responseStream);
        }
    }