0

こんにちは私は次のコードから画像をダウンロードしています

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, imageUri);
            HttpResponseMessage response = await http.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
            var imageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
            var fs = await imageFile.OpenAsync(FileAccessMode.ReadWrite);
            DataWriter writer = new DataWriter(fs.GetOutputStreamAt(0));
            writer.WriteBytes(await response.Content.ReadAsByteArrayAsync());
            await writer.StoreAsync();
            writer.DetachStream();
            await fs.FlushAsync();
            fs.Dispose();

しかし、コードのダウンロードを実行した直後にそれを開こうとすると、次のコードの助けを借りて、画像制御のソースとして設定しようとします

            var imageFile = await ApplicationData.Current.LocalFolder.GetFileAsync(imageName);
            IRandomAccessStream stream = await imageFile.OpenAsync(FileAccessMode.Read);
            imageControl.SetSource(stream);

次の例外をスローします

アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))

内部例外は次のとおりです。

ヌル

その時点で私が間違いをしていることを知らせてください。

前もって感謝します

4

1 に答える 1

1

ここで答えを得ました..もう1行追加する必要がありました..今、ダウンロードコードは

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, imageUri);
            HttpResponseMessage response = await http.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
            var imageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
            using (var fs = await imageFile.OpenAsync(FileAccessMode.ReadWrite))
            {
                var outStream = fs.GetOutputStreamAt(0);
                DataWriter writer = new DataWriter(outStream);
                writer.WriteBytes(await response.Content.ReadAsByteArrayAsync());
                await writer.StoreAsync();
                writer.DetachStream();
                await fs.FlushAsync();
                outStream.Dispose();
                fs.Dispose();
            }
于 2012-10-22T07:34:57.573 に答える