C# 对同一资源的多个WebRequests是否相互阻塞?

C# 对同一资源的多个WebRequests是否相互阻塞?,c#,blocking,webresponse,C#,Blocking,Webresponse,因此,我有多个线程试图从一个资源获取响应,但出于某种原因-即使它们在不同的线程中运行,每个响应都只会在所有其他线程仍在等待或关闭时返回。我试着用 WebResponse-response=wait-request.GetResponseAsync()但首先,这对我来说似乎是多余的,因为我已经在运行不同的线程,而且VisualStudio也告诉我 “await”运算符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法,并将其返回类型改为“任务”。 这是怎么回事 编辑(代码): Start方

因此,我有多个线程试图从一个资源获取响应,但出于某种原因-即使它们在不同的线程中运行,每个响应都只会在所有其他线程仍在等待或关闭时返回。我试着用
WebResponse-response=wait-request.GetResponseAsync()但首先,这对我来说似乎是多余的,因为我已经在运行不同的线程,而且VisualStudio也告诉我

“await”运算符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法,并将其返回类型改为“任务”。

这是怎么回事

编辑(代码):

Start方法(从单个线程调用)

下载线程:

private void DownloadThreadWorker()
        {
            WebResponse response = request.GetResponse();
            if (response != null)
            {
                if (!CheckRange(response))
                    Abort(String.Format("Multi part downloads not supported (Requested length: {0}, response length: {1})", ByteLength, response.ContentLength));
                else
                { ...

根据HTTP 1.1 RFC,客户端的并发连接不应超过2个。不确定IE的最新版本,但以前IE遵守此限制(可以通过注册表项进行更改),并且在任何时候与同一主机的连接不超过2个。这可能是你正在经历的限制


或者尝试将
ServicePointManager.DefaultConnectionLimit
设置为2以上。

您调用的资源一次只能处理一个请求,还是可以同时处理多个请求?因为您几乎没有提供任何代码(请始终提供超过1行的代码!!!)我不得不问,
request
是否为每个线程?资源可以处理多个连接。请求是在单个线程中创建的,响应是在单个线程中创建的。请尝试将
ServicePointManager.DefaultConnectionLimit
设置为超出(可能是正确的)范围,在Webrequest上调用Async最有可能。你应该看看
private void DownloadThreadWorker()
        {
            WebResponse response = request.GetResponse();
            if (response != null)
            {
                if (!CheckRange(response))
                    Abort(String.Format("Multi part downloads not supported (Requested length: {0}, response length: {1})", ByteLength, response.ContentLength));
                else
                { ...