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; });
}
}
}
}