2015-04-13 6 views
0

Событие OpenReadCompleted существует в Wp8.0 с WebClient, но не существует в WP8.1 с HttpClient. Какая альтернатива обрабатывать событие OpenReadCompleted для HttpClient в Wp8.1OpenReadCompleted Событие не существует для HttpClient в Windows Phone 8.1

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

ответ

1

HttpClient использует методы async, а не события.

Чтобы использовать их, вы должны сначала пометить свой метод как асинхронный. После этого вы можете использовать метод 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); 
     } 
    } 
} 
+0

Как вы стреляете Button_Click событие для HttpClient –

+0

Это просто случайный метод, чтобы показать вам, как это работает. Просто поместите код везде, где вам нужно, но не забудьте добавить ключевое слово 'async' в метод (это то, что я пытался продемонстрировать) –

+0

ok .. Спасибо за ваш повтор –