protected override void OnMouseClick(MouseEventArgs e) { // GUI-поток инициирует асинхронный веб-запрос Text = Resources.StartWebRequestMsg; WebRequest webRequest = WebRequest.Create(DefaultHost); webRequest.BeginGetResponse(SyncContextUtils.SyncContextCallback(asyncResult => { // Если мы попали сюда, это должен быть GUI-поток, // значит, обновляем пользовательский интерфейс var request = asyncResult.AsyncState as WebRequest; if (request != null) { try { using (var webResponse = request.EndGetResponse(asyncResult)) { Text = string.Format(Resources.ResponseLengthMsg, webResponse.ContentLength); } } catch (WebException webEx) { Text = webEx.Message; } } }), webRequest); base.OnMouseClick(e); }
private void StartRequestOnMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { // GUI-поток инициирует асинхронный веб-запрос Title = Properties.Resources.WebRequestInitiatedMsg; WebRequest webRequest = WebRequest.Create(DefaultHost); webRequest.BeginGetResponse(SyncContextUtils.SyncContextCallback(result => { // Если мы попали сюда, это должен быть GUI-поток, // значит, обновляем пользовательский интерфейс var request = result.AsyncState as WebRequest; if (request != null) { try { using (WebResponse response = request.EndGetResponse(result)) { Title = string.Format("Content length: {0}", response.ContentLength); } } catch (WebException webEx) { Title = webEx.Message; } } }), webRequest); }