Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多线程连续webresponse流,只有一个可用_C#_Stream - Fatal编程技术网

C# 多线程连续webresponse流,只有一个可用

C# 多线程连续webresponse流,只有一个可用,c#,stream,C#,Stream,我正在尝试创建一个执行多个线程的应用程序,在该线程中将有一个到网站的连接。我一直在看这个网站(因为它一直在发送信息) 问题是,只有一个线程似乎能够继续从网站上读取,其他线程似乎无法读取流。当我设置断点时,工作线程命中,但其他线程没有。因此,我在Threads overview(线程概览)窗口中查看另一个线程,以及它的位置“处于睡眠状态,等待或加入”。它也不会出现在try-catch块中 我不知道如何解决这个问题,提前谢谢你的帮助 HttpWebRequest request = (Htt

我正在尝试创建一个执行多个线程的应用程序,在该线程中将有一个到网站的连接。我一直在看这个网站(因为它一直在发送信息)

问题是,只有一个线程似乎能够继续从网站上读取,其他线程似乎无法读取流。当我设置断点时,工作线程命中,但其他线程没有。因此,我在Threads overview(线程概览)窗口中查看另一个线程,以及它的位置“处于睡眠状态,等待或加入”。它也不会出现在try-catch块中

我不知道如何解决这个问题,提前谢谢你的帮助

    HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(domain);
    request.Credentials = new NetworkCredential(Username, Password);

    HttpWebResponse response = (HttpWebResponse) request.GetResponse();
    using (response)
    {
      Stream resStream = response.GetResponseStream();
      using (resStream)
      {
        int count;
        do
        {
          count = resStream.Read(buf, 0, buf.Length);
          // make sure we read some data);
          if (count != 0)
          {
            string tempString = Encoding.ASCII.GetString(buf, 0, count);
            QueueResponse(tempString);
          }
          catch (Exception e)
          {
            Console.WriteLine("Exception occured");
          }
          Thread.Sleep(1000);
        } while (count > 0); 
      }
    }

您可能需要检查两件事:

  • 网站可能会限制资源的并发请求数量,或者
  • 您可能正在达到
    ServicePointManager
    施加的连接限制(请参阅)

  • 您可能需要检查两件事:

  • 网站可能会限制资源的并发请求数量,或者
  • 您可能正在达到
    ServicePointManager
    施加的连接限制(请参阅)

  • 我的初步设想是,您的环境无法同时支持多个线程。尽管您已经使用多线程,但应用程序一次只能运行一个线程,直到调度程序允许其他线程在其等待的处理器/资源上运行。如果您多次运行/暂停运行/暂停应用程序,是否总是同一个线程在运行,其他线程在等待?您可能需要对格式化进行第二次检查。好的,那么这段代码是如何配合的,QueueResponse()可以阻止吗,为什么有Sleep()?Sleep是为了允许其他线程执行其工作,queueresponse只是一种将字符串添加到列表的方法。如果您的环境不能同时支持多个线程,则我的初始设置是。尽管您已经使用多线程,但应用程序一次只能运行一个线程,直到调度程序允许其他线程在其等待的处理器/资源上运行。如果您多次运行/暂停运行/暂停应用程序,是否总是同一个线程在运行,其他线程在等待?您可能需要对格式化进行第二次检查。好的,那么这段代码是如何配合的,QueueResponse()可以阻止吗,为什么有Sleep()?Sleep是为了允许其他线程执行其工作,queueresponse只是一个将字符串添加到列表中的方法