C# 下载和使用文件原因 System.UnauthorizedAccessException

C# Downloading And Using File Causes System.UnauthorizedAccessException

我正在尝试创建一个下载文件然后编辑该文件的应用程序。

我遇到的问题是文件下载后它似乎并没有放弃该文件,我可以将文件下载到其本地存储,我已经从 Iso 手动获取文件并且它很好。如果我在下载文件后使用该应用程序继续,我会收到 System.UnauthorizedAccessException 错误,但如果我关闭并打开该应用程序,然后只编辑保存在 iso 中的文件,它就可以工作,就像我说的,它好像仍在使用下载的文件。

 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();
        }
    }
}