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