[英]System.UnauthorizedAccessException C# Windows 10 Phone Emulator
[英]Windows Store C#: System.UnauthorizedAccessException writing image file
我目前正在创建一个Windows应用商店应用(C#),该应用会定期(每3秒)从URL中提取图像并将其显示在页面上。 该图像一次成功下载到临时应用程序存储中,但是第二次出现拒绝访问(UnauthorizedAccessException)的情况。
这很可能是因为我的应用程序在尝试用新图像覆盖它时将文件用作位图的源(因此它仍然处于打开状态)。
有没有可以避免并发问题的解决方法?
public async void GetLocalImageAsync(string internetUri, string uniqueName)
{
//Set up the web request and pass credentials.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(internetUri);
request.Credentials = new NetworkCredential("james", "jam3s");
//get response
using (var response = await request.GetResponseAsync())
{
using (var stream = response.GetResponseStream())
{
var desiredName = string.Format(uniqueName);
//create the file.
var file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(desiredName, CreationCollisionOption.ReplaceExisting);
using (var filestream = await file.OpenStreamForWriteAsync())
{
await stream.CopyToAsync(filestream);
//update the bitmap image with the file we just downloaded.
BitmapImage c1src = new BitmapImage(new Uri("ms-appdata:///temp/camera1imgsrc.png"));
camera1img.Source = c1src;
}
}
}
}
尝试使用ReaderWriterLockSlim类处理文件。 http://msdn.microsoft.com/zh-CN/library/system.threading.readerwriterlockslim.aspx
您可以使用不同的名称来存储每个下载的文件(例如,通过在根文件名中添加时间戳或序列号)。 下载后,您可以将源设置为此新下载的文件,然后再删除之前的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.