用linq to Observable 获取 WebResponse

      using System.Reactive.Linq;

      privatevoid button1_Click(object sender, RoutedEventArgs e)
        {
            getUrl("http://www.cnblogs.com/therock").ObserveOnDispatcher().Subscribe(x =>
            {
                var ms = new MemoryStream();
                x.GetResponseStream().CopyTo(ms);
                string s = Encoding.UTF8.GetString(ms.GetBuffer());
                this.Dispatcher.Invoke(new Action(() =>
                    {
                        MessageBox.Show(s);
                    }));
            }); 

        }


        private IObservable<WebResponse> getUrl(string Url)
        {
            var httpWR =
               (HttpWebRequest)WebRequest.Create(Url);
            var getResponse =
               Observable.FromAsyncPattern<WebResponse>(httpWR.BeginGetResponse, httpWR.EndGetResponse);
            return getResponse();
        }

posted @ 2012-07-06 17:55  therockthe  阅读(201)  评论(0)    收藏  举报