Вы можете использовать это
^(?=.*[1-9])-?\d+$
^
- Начало строки. (?=.*[1-9])
- условие для ненулевых значений. -?
- Матчи -
при запуске. (? делает его необязательным) \d+
- Соответствует цифрам от 0 до 9 один или несколько раз. $
- Конец строки. Возможно, Firefox выдает несколько запросов одновременно, тогда как ваш код выполняет их один за другим. Возможно, добавление потоков ускорит вашу программу.
измените код на асинхронный getresponse
public override WebResponse GetResponse() {
•••
IAsyncResult asyncResult = BeginGetResponse(null, null);
•••
return EndGetResponse(asyncResult);
}
Пробовали ли вы открыть тот же URL-адрес в IE на компьютере, на котором развернут ваш код? Если это компьютер с Windows Server, то иногда это происходит из-за того, что запрашиваемый URL-адрес отсутствует в списке безопасных сайтов IE (который HttpWebRequest не работает). Вам просто нужно его добавить.
У вас есть дополнительная информация, которую вы могли бы опубликовать? Я делал нечто подобное и раньше сталкивался с множеством проблем с HttpWebRequest. Все уникальное. Так что дополнительная информация поможет.
Кстати, вызов его с использованием асинхронных методов в этом случае не поможет. Это не сокращает время загрузки. Это просто не блокирует ваш вызывающий поток, вот и все.
Я заметил, что HttpWebRequest
зависает при первом запросе. Я провел небольшое исследование, и, похоже, происходит то, что запрос настраивает или автоматически определяет прокси. Если вы установите
request.Proxy = null;
для объекта веб-запроса, вы сможете избежать начальной задержки.
С автоопределением прокси:
using (var response = (HttpWebResponse)request.GetResponse()) //6,956 ms
{
}
Без автоопределения прокси:
request.Proxy = null;
using (var response = (HttpWebResponse)request.GetResponse()) //154 ms
{
}
The answer is changing HttpWebRequest/HttpWebResponse to WebRequest/WebResponse only. That fixed the problem.
закройте поток ответов, когда вы закончите, поэтому в вашем checkExist () добавьте wresp.Close () после wresp = (HttpWebResponse) wreq.GetResponse ();