Значение Timeout
, которое вы устанавливаете, - это время ответа GetResponse
.HttpWebRequest
также имеет значение ReadWriteTimeout , которое используется при чтении или записи.Вы не устанавливаете ReadWriteTimeout
, поэтому возможно, что GetResponse
возвращается в течение тайм-аута, но время чтения истекло.
Я бы посоветовал вам попробовать следующую модификацию:
HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create(String.Format("http://{0}/mjpg/snapshot.cgi?camera={1}", structTP.Cam.TotalIP, structTP.Cam.View));
WebRequestObject.Timeout = 5000;
WebRequestObject.ReadWriteTimeout = 5000;
Дополнительные наблюдения:
Ваш журнал неполон, например, есть ОШИБКА для файла input1_0007
, но для него нет строки BEGIN.Является ли ваша ListTest
поточно-безопасной коллекцией?Если нет, то два потока, обновляющих его одновременно, вполне могут испортить список.
Кроме того, вы сказали, что ваш код делает запрос каждые 500 мс.Но ваш журнал показывает три запроса в течение одной секунды.
Конечно, это не объясняет тайм-аут, если только по какой-то причине ServicePointManager
или что-то еще не решило убить его из-за слишком большого количества невыполненныхЗапросы.Вы можете посмотреть на трассировку стека исключений, чтобы увидеть, где было сгенерировано исключение тайм-аута.
Кроме того, вы можете рассмотреть возможность изменения кода, чтобы он никогда не делал другой запрос к камере, пока не будет выполнен первый.Таким образом, вместо таймера, который срабатывает каждые 500 мс, вы запускаете однократный таймер с задержкой в 500 мс.Обратный вызов таймера получает изображение и затем повторно инициализирует таймер еще на 500 мс.Таким образом, никогда не будет более одного невыполненного запроса на изображение, и вы избежите странных проблем с параллелизмом.В нынешнем виде изображения могут отображаться не по порядку.
Я думаю, у вас проблемы с параллелизмом.Если несколько потоков могут выполнять этот код одновременно (вы указали, что это возможно), тогда ваш ListTest
может быть поврежден, если это не потокобезопасный список какого-либо вида.