Windows Phone 8.1 中的 HttpClient 不存在 OpenReadCompleted 事件
OpenReadCompleted Event is Not exist for HttpClient in Windows Phone 8.1
OpenReadCompleted 事件在 Wp8.0 和 WebClient 中存在,但在 WP8.1 和 HttpClient 中不存在,在 Wp8.1 中处理 HttpClient 的 OpenReadCompleted 事件的替代方案是什么
HttpClient client = new HttpClient();
client.OpenReadCompleted += client_OpenReadCompleted;
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
MemoryStream str = new MemoryStream();
GifDecoder gd = new GifDecoder();
ImageTools.ExtendedImage img = new ImageTools.ExtendedImage();
gd.Decode(img, e.Result); //stream means image stream
JpegEncoder png = new JpegEncoder();
png.Encode(img, str);
}
HttpClient 使用异步方法,而不是事件。
要使用它们,您必须先将您的方法标记为异步。然后你可以使用 GetStreamAsync
方法来检索你的流:
private async void Button_Click(object sender, RoutedEventArgs e)
{
using (var client = new System.Net.Http.HttpClient())
{
using (var stream = await client.GetStreamAsync(yourUri))
{
MemoryStream str = new MemoryStream();
GifDecoder gd = new GifDecoder();
ImageTools.ExtendedImage img = new ImageTools.ExtendedImage();
gd.Decode(img, stream); //stream means image stream
JpegEncoder png = new JpegEncoder();
png.Encode(img, str);
}
}
}
OpenReadCompleted 事件在 Wp8.0 和 WebClient 中存在,但在 WP8.1 和 HttpClient 中不存在,在 Wp8.1 中处理 HttpClient 的 OpenReadCompleted 事件的替代方案是什么
HttpClient client = new HttpClient();
client.OpenReadCompleted += client_OpenReadCompleted;
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
MemoryStream str = new MemoryStream();
GifDecoder gd = new GifDecoder();
ImageTools.ExtendedImage img = new ImageTools.ExtendedImage();
gd.Decode(img, e.Result); //stream means image stream
JpegEncoder png = new JpegEncoder();
png.Encode(img, str);
}
HttpClient 使用异步方法,而不是事件。
要使用它们,您必须先将您的方法标记为异步。然后你可以使用 GetStreamAsync
方法来检索你的流:
private async void Button_Click(object sender, RoutedEventArgs e)
{
using (var client = new System.Net.Http.HttpClient())
{
using (var stream = await client.GetStreamAsync(yourUri))
{
MemoryStream str = new MemoryStream();
GifDecoder gd = new GifDecoder();
ImageTools.ExtendedImage img = new ImageTools.ExtendedImage();
gd.Decode(img, stream); //stream means image stream
JpegEncoder png = new JpegEncoder();
png.Encode(img, str);
}
}
}