WP7 HttpWebRequest跨线程异步更新界面UI
2012-04-20 22:33
246 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;
namespace WebClientHttpWebRequest
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
DoWebClient();
DoHttpWebRequest();
}
private void DoWebClient()
{
var webClient = new WebClient();
webClient.OpenReadAsync(new Uri("http://www.bing.com"));
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
using (var reader = new StreamReader(e.Result))
{
webClientTextBlock.Text = reader.ReadToEnd();
}
}
private void DoHttpWebRequest()
{
string url = "http://www.bing.com";
var request = HttpWebRequest.Create(url);
var result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);
}
private void ResponseCallback(IAsyncResult result)
{
var request = (HttpWebRequest)result.AsyncState;
var response = request.EndGetResponse(result);
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
// FAIL - httpWebRequestTextBlock.Text = reader.ReadToEnd(); //UnauthorizedAccessException was Unhandled - Invalid cross-thread access.
// FAIL - Dispatcher.BeginInvoke(() => { httpWebRequestTextBlock.Text = reader.ReadToEnd(); }); //ObjectDisposedException unhandled - Cannot read from a closed TextReader.
var contents = reader.ReadToEnd();
Dispatcher.BeginInvoke(() => { httpWebRequestTextBlock.Text = contents; });
}
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;
namespace WebClientHttpWebRequest
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
DoWebClient();
DoHttpWebRequest();
}
private void DoWebClient()
{
var webClient = new WebClient();
webClient.OpenReadAsync(new Uri("http://www.bing.com"));
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
using (var reader = new StreamReader(e.Result))
{
webClientTextBlock.Text = reader.ReadToEnd();
}
}
private void DoHttpWebRequest()
{
string url = "http://www.bing.com";
var request = HttpWebRequest.Create(url);
var result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);
}
private void ResponseCallback(IAsyncResult result)
{
var request = (HttpWebRequest)result.AsyncState;
var response = request.EndGetResponse(result);
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
// FAIL - httpWebRequestTextBlock.Text = reader.ReadToEnd(); //UnauthorizedAccessException was Unhandled - Invalid cross-thread access.
// FAIL - Dispatcher.BeginInvoke(() => { httpWebRequestTextBlock.Text = reader.ReadToEnd(); }); //ObjectDisposedException unhandled - Cannot read from a closed TextReader.
var contents = reader.ReadToEnd();
Dispatcher.BeginInvoke(() => { httpWebRequestTextBlock.Text = contents; });
}
}
}
}
相关文章推荐
- WP7 异步操作 HttpWebRequest
- WP7 网络操作(2) HttpWebRequest GET请求队列
- XMLHttpRequest 对象异步调用web服务
- WP7 网络操作(1) HttpWebRequest基本的GET请求
- HttpWebRequest 的一个 异步封装
- 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据
- C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题
- 使用HttpWebRequest自动更新客户端应用程序[转]
- Windows Phone 7(WP7)开发 网络操作(1) HttpWebRequest基本的GET请求
- 使用异步消息机制在子线程中更新UI
- wp7,webClient&httpWebRequest&BitmapImage
- Windows Phone 7(WP7)开发 网络操作(2) HttpWebRequest GET请求队列
- httpwebrequest异步参考
- android为什么不允许新开启一个线程来更新UI,而是用handler来更新界面
- winform异步线程更新UI问题
- 浅谈Android中使用异步线程更新UI视图的几种方法
- Windows Phone (WP) 跨线程更新界面(UI)
- Android 子线程 更新 UI 界面 总结
- C# 异步线程加载数据 更新UI
- wp7使用POST请求Asp.net网页时,HttpWebRequest的BeginGetResponse方法抛出NotSupportException异常的解决方法