Vb.net Windows通用应用程序:在USB驱动器上打开文件

Vb.net Windows通用应用程序:在USB驱动器上打开文件,vb.net,async-await,win-universal-app,Vb.net,Async Await,Win Universal App,我想在USB驱动器上选择一个XML文件,然后打开并读取它。我想我对Universap应用程序中的概念有误解 当我使用此代码时,在尝试加载路径“E:\folder\file.xml”时,会出现错误“访问路径“E:\folder\file.xml”被拒绝” Dim picker As Windows.Storage.Pickers.FileOpenPicker = New Windows.Storage.Pickers.FileOpenPicker picker.ViewMode = Windows

我想在USB驱动器上选择一个XML文件,然后打开并读取它。我想我对Universap应用程序中的概念有误解

当我使用此代码时,在尝试加载路径“E:\folder\file.xml”时,会出现错误“访问路径“E:\folder\file.xml”被拒绝”

Dim picker As Windows.Storage.Pickers.FileOpenPicker = New Windows.Storage.Pickers.FileOpenPicker
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail
picker.FileTypeFilter.Add(".xml")
Dim File As Windows.Storage.StorageFile = Await picker.PickSingleFileAsync
 Await Task.Run(Function()
   If Not (File Is Nothing) Then
     Task.Yield()
     Dim loadedData As XDocument = XDocument.Load(File.Path)
   End If
End Function)
据我所知,当使用选择器选择文件时,将授予文件访问权限。也许是这样,因为我在Task.Run中访问它

当我将picker.PickSingleFileAsync放入函数时,它不起作用,因为我不能使用wait调用它。删除wait后,我收到一个强制转换错误“无法将'System.\u ComObject'类型的对象强制转换为'Windows.Storage.StorageFile'


我的概念错误是什么?我如何使用选择器选择一个文件(或者我是否必须使用选择器以外的东西?)并打开和读取它(xml)?如果重要:代码应放在按钮的单击事件中。

您只能访问文件对象。
您可以通过文件的路径访问该文件

这种方法应该有效:

    Dim picker As Windows.Storage.Pickers.FileOpenPicker = New Windows.Storage.Pickers.FileOpenPicker
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail
    picker.FileTypeFilter.Add(".xml")
    Dim File As Windows.Storage.StorageFile = Await picker.PickSingleFileAsync

    Dim Fl = Await File.OpenAsync(Windows.Storage.FileAccessMode.Read)
    Dim inStream As Stream = Fl.AsStreamForRead()

    Dim loadedData As XDocument = XDocument.Load(inStream)

谢谢,这是我进一步工作/调查的良好基础