1

以下のコードを使用して、ウィンドウフォンでサーバーから非同期に画像を読み込もうとしていますが、InMemoryRandomAccessStream でエラーが発生します

「型または名前空間名 'InMemoryRandomAccessStream' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)」

private async Task GetImageTaskAsync()
    {
        HttpClient client = new HttpClient();

        HttpResponseMessage response = await client.GetAsync("http://ts1.mm.bing.net/images/thumbnail.aspx?q=1080606601222&id=e7d54ea3862e939e6fd414b8750d86bdimage/jpeg1601204364");

        byte[] img = await response.Content.ReadAsByteArrayAsync();

        InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();

        DataWriter writer = new DataWriter(randomAccessStream.GetOutputStreamAt(0));

        writer.WriteBytes(img);

        await writer.StoreAsync();

        BitmapImage b = new BitmapImage();

        b.SetSource(randomAccessStream);
    }

私の使用ステートメントは以下のとおりです

using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using RaveCompass.Resources;
using System.Net;
using System.Windows;
using Windows.Storage.Streams;
using System.Xml.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;

親切に支援してください。ウェブサイトから非同期的に画像をロードできる他の方法がある場合は、親切に提案してください

4

2 に答える 2

1

InMemoryRandomAccessStreamWindows Phone では使用できません。Windows 8 専用です。MSDNで確認してください。

InMemoryRandomAccessStreamURL 経由で画像を設定する必要はありませんBitmapImage。URL自体をソースとして設定できます。

private void GetImageTaskAsync()
{
    BitmapImage b = new BitmapImage(new Uri("http://ts1.mm.bing.net/images/thumbnail.aspx?q=1080606601222&id=e7d54ea3862e939e6fd414b8750d86bdimage/jpeg1601204364"));
}
于 2013-11-07T02:37:46.890 に答える
0

Windows Phone 7 は Silverlight の「WP エディション」を使用することに注意してください。

  1. BitmapImage のダウンロードは非同期操作です

  2. デフォルトでは、Silverlight は必要になるまでダウンロードやレンダリングを遅らせようとします。

  3. Silverlight は、イメージがビジュアル ツリーに追加されるまで、つまり表示されるまでイメージをレンダリングしません。

Loading an http-image into WriteableImageで入手可能な情報に従ってください。await を使用するよりもエレガントではないことはわかっていますが、他にそれを行う方法は見つかりませんでした。

おそらく非同期待機パターンを使用して、より良い方法を誰かが知っている場合は、お知らせください。

于 2014-02-03T20:10:36.047 に答える