C# 如何释放/处置Windows.Data.PDF文档

C# 如何释放/处置Windows.Data.PDF文档,c#,pdf,windows-10,windows-8.1,C#,Pdf,Windows 10,Windows 8.1,下面的代码将在Windows 10 1709上引发一个UnauthorizedAccessException。在以前版本的Windows 10(或8.1)上,不会引发异常。如果注释掉带有LoadFromFileAsync的行,则不会引发异常 private async void Button_Click(object sender, RoutedEventArgs e) { var source = await Windows.ApplicationModel.Package.Curren

下面的代码将在Windows 10 1709上引发一个
UnauthorizedAccessException
。在以前版本的Windows 10(或8.1)上,不会引发异常。如果注释掉带有
LoadFromFileAsync
的行,则不会引发异常

private async void Button_Click(object sender, RoutedEventArgs e)
{
   var source = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Assets\example.pdf");

   var tempFile = await source.CopyAsync(ApplicationData.Current.TemporaryFolder, "my.pdf", NameCollisionOption.ReplaceExisting);

   var pdf = await PdfDocument.LoadFromFileAsync(tempFile);

   await tempFile.DeleteAsync(StorageDeleteOption.PermanentDelete);
}
由于
PdfDocument
没有提供释放/释放资源的方法,这似乎是框架中的一个bug。我能想到的唯一解决方法是通过
LoadFromStreamAsync
传递数据,以防止文件被锁定

那么如何在Windows101709上正确发布
PdfDocument

尝试删除之前的其他屏幕截图:


最后采用了解决方法,以防止
PdfDocument
锁定文件:

using (var stream = await tempFile.OpenReadAsync())
{
   var pdf = await PdfDocument.LoadFromStreamAsync(stream);
   // do something with the document
}

await tempFile.DeleteAsync(StorageDeleteOption.PermanentDelete);

你有没有试着整理资源?System.Runtime.InteropServices.Marshal.ReleaseComObject(pdf)@Florian:谢谢,如果我添加此调用,也会遇到同样的问题。您是否尝试过不使用“异步解决方案”?您遇到的问题似乎与pdf本身无关,但更多的是关于“权限”,您是否以管理员模式运行应用程序?是的,异常消息实际上更像是“权限被拒绝”。但是,如果我注释掉删除部分并重新运行程序只是为了删除文件,它就可以工作了。因此,这肯定是某种资源/句柄泄漏。