这是开始网络请求的方法,网络返回在ResponseCallback处理:
private void DoHttpWebRequest()
{
string url = "http://www.cnblogs.com/linzheng";
var request = HttpWebRequest.Create(url);//创建WebRequest类
var result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);
}
这里处理网络返回流:
private void ResponseCallback(IAsyncResult result)
{ // 前4行是通用的,在大括号里面才是对流的操作
HttpWebRequest request = (HttpWebRequest)result.AsyncState;//获取异步操作返回的的信息
WebResponse response = request.EndGetResponse(result);//结束对 Internet 资源的异步请求
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string contents = reader.ReadToEnd();
int begin = contents.ToString().IndexOf("
int end = contents.ToString().IndexOf("
string note = contents.Substring(contents.ToString().IndexOf("摘要"), 300);
//通过呼叫UI Thread来改变页面的显示
Dispatcher.BeginInvoke(() => { httpWebRequestTextBlock.Text = contents.ToString().Substring(begin + 7, end - begin - 7); textBox2.Text = note; });
}
}
ResponseCallback这个回调是在后台线程调用的,想要更新主线程ui就要使用 Dispatcher.BeginInvoke(() => {}