Несколько веб-запросов на один и тот же ресурс блокируют друг друга?

Таким образом, у меня есть несколько потоков, пытающихся получить ответ от ресурса, но по какой-то причине - даже если они работают в отдельных потоках, каждый ответ будет возвращаться только тогда, когда все остальные все еще ожидают или закрыты. Я пытался с помощью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.

Другие вопросы по тегам