C#下载和使用文件会导致System.UnauthorizedAccessException

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

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

我遇到的问题是,一旦文件被下载,它似乎不会释放该文件,我可以将该文件下载到它的本地存储,我已经从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();
        }
    }
}

如果你在连续下载和处理文件,为什么你会对异步如此满意呢?我只是在使用我遇到的示例,因为我对c35; TargetStream.Dispose()还是相当陌生的;似乎正在执行此任务。方法
Close()
(如果可用)通常是
Dispose()
的同义词。