Несколько веб-запросов на один и тот же ресурс блокируют друг друга?
Таким образом, у меня есть несколько потоков, пытающихся получить ответ от ресурса, но по какой-то причине - даже если они работают в отдельных потоках, каждый ответ будет возвращаться только тогда, когда все остальные все еще ожидают или закрыты. Я пытался с помощьюWebResponse response = await request.GetResponseAsync();
но, во-первых, это кажется мне излишним, так как я уже использую отдельные потоки, а также Visual Studio говорит мне
Оператор 'await' может использоваться только внутри асинхронного метода. Попробуйте пометить этот метод модификатором async и изменить его тип возвращаемого значения на Task.
Что тут происходит?
РЕДАКТИРОВАТЬ (код):
Метод запуска (вызывается из одного потока)
public void Start()
{
if (!Started)
{
ByteAt = 0;
request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "GET";
request.AddRange(ByteStart, ByteStart + ByteLength);
downloadThread = new Thread(DownloadThreadWorker);
downloadThread.Start();
Started = true;
Paused = false;
}
}
Скачать темы:
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
{ ...
1 ответ
Согласно HTTP 1.1 RFC клиент должен установить не более 2 одновременных подключений. Не уверен насчет последних версий IE, но ранее IE учитывал это ограничение (можно было изменить с помощью ключа реестра) и имел только не более 2 подключений к одному хосту одновременно. Это может быть ограничение, которое вы испытываете...
Или попробуйте установить ServicePointManager.DefaultConnectionLimit
выше 2.