Пытаюсь сделать timeout для WebClient. Впринципе нашел разные способы, но не могу понять почему мой не работает... Всегда переходит на метку theEnd;
| Код | wc.DownloadStringCompleted += (ender,args)=> { res = args.Result; var cook = Regex.Matches(wc.ResponseHeaders.ToString(), "Set\\-Cookie:\\s*([\\w\\-_\\.]+\\s*=\\s*[^;]+)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline); foreach (Match val in cook) cookies += val.Groups[1].Value.Trim() + "; "; }; wc.DownloadStringAsync(new System.Uri(url));
int msec = 0; while (String.IsNullOrEmpty(res)) { Thread.Sleep(1); ++msec; if (msec >= 10000) { lastError = "TimeOut"; goto theEnd; } } return res;
|
подозреваю что Sleep блокирует главный поток и поэтому событие не вызывается, если конечно событие вызывается в главном потоке... Как быть в этом случае, мне не хочется использовать обертку над ВебКлиентом или Task, данные методы мне кажутся избыточными... |