如何释放/处置Windows.Data.PdfDocument

How to release / dispose Windows.Data.PdfDocument

下面的代码将在 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 没有提供 free/release 明显声明的资源的方法,这似乎是框架中的一个错误。我能想到的唯一解决方法是通过 LoadFromStreamAsync 传递数据以防止文件被锁定。

那么 PdfDocument 如何在 Windows 10 1709 上正确发布?

尝试删除前的附加屏幕截图:

终于采用了防止 PdfDocument 锁定文件的解决方法:

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

await tempFile.DeleteAsync(StorageDeleteOption.PermanentDelete);