C#下载和使用文件会导致System.UnauthorizedAccessException
我正在尝试创建一个下载文件然后编辑此文件的应用程序 我遇到的问题是,一旦文件被下载,它似乎不会释放该文件,我可以将该文件下载到它的本地存储,我已经从Iso手动获取了该文件,它很好。如果我在下载文件后使用应用程序继续,我会得到System.UnauthorizedAccessException错误,但是如果我关闭并打开应用程序,然后编辑保存在iso中的文件,它就会工作,就像我说的,它就像某些东西仍在使用下载的文件一样C#下载和使用文件会导致System.UnauthorizedAccessException,c#,windows-phone-8.1,windows-8.1,C#,Windows Phone 8.1,Windows 8.1,我正在尝试创建一个下载文件然后编辑此文件的应用程序 我遇到的问题是,一旦文件被下载,它似乎不会释放该文件,我可以将该文件下载到它的本地存储,我已经从Iso手动获取了该文件,它很好。如果我在下载文件后使用应用程序继续,我会得到System.UnauthorizedAccessException错误,但是如果我关闭并打开应用程序,然后编辑保存在iso中的文件,它就会工作,就像我说的,它就像某些东西仍在使用下载的文件一样 public async void DownloadTrack(Uri Son
public async void DownloadTrack(Uri SongUri)
{
var httpClient = new HttpClient();
var data = await httpClient.GetByteArrayAsync(SongUri);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Test.mp3", CreationCollisionOption.ReplaceExisting);
var targetStream = await file.OpenAsync(FileAccessMode.ReadWrite);
await targetStream.AsStreamForWrite().WriteAsync(data, 0, data.Length);
await targetStream.FlushAsync();
}
这段代码可以很好地下载mp3,因为我已经测试了下载文件。我已经看过代码以
targetStream.Close();
但是它没有告诉我,有没有其他方法来关闭下载
谢谢。我不想调用
Close()
或Dispose()
我真的很喜欢使用using
自动完成任务。因此,您的方法可以如下所示:
public async void DownloadTrack(Uri SongUri)
{
using (HttpClient httpClient = new HttpClient())
{
var data = await httpClient.GetByteArrayAsync(SongUri);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Test.mp3", CreationCollisionOption.ReplaceExisting);
using (var targetStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
await targetStream.AsStreamForWrite().WriteAsync(data, 0, data.Length);
await targetStream.FlushAsync();
}
}
}
如果你在连续下载和处理文件,为什么你会对异步如此满意呢?我只是在使用我遇到的示例,因为我对c35; TargetStream.Dispose()还是相当陌生的;似乎正在执行此任务。方法
Close()
(如果可用)通常是Dispose()
的同义词。