【发布时间】:2016-11-28 16:51:35
【问题描述】:
如何在 UWP 上完成/关闭 BitmapEncoder?
InMemoryRandomAccessStream imras = new InMemoryRandomAccessStream();
await [...] //Fill stream
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(imras);
[...] //Do something
StorageFile sf = await ApplicationData.Current.LocalFolder.CreateFileAsync("123.jpg", CreationCollisionOption.ReplaceExisting);
BitmapEncoder bmpEncoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, await sf.OpenAsync(FileAccessMode.ReadWrite));
[...]
await bmpEncoder.FlushAsync();
imras.Dispose();
现在,当我尝试访问该文件时,我收到了 System.UnauthorizedAccessException,我必须关闭 UWP 应用才能访问此文件...如何关闭它?
【问题讨论】:
-
如果您需要确定性销毁,请不要使用无法交付的语言 (C#) 或平台 (.NET)。
using语句与IDisposable模式结合使用是行不通的。您可以实现一个 kludge(基于此),或完全删除不必要的托管层。