我试图解析一些xml文件并将结果返回到UWA中的数据网格。代码构建正常,但在运行时返回
无法转换'System.Threading.Tasks.Task
1[System.Collections.Generic.List
1 [Festplatten_Archiv_Client.Drive]]'类型的对象以输入'System.Collections.IEnumerable'。
在我的XAML.vb中,我只调用类来创建文件并将结果设置为fileSource:
Public Sub New()
InitializeComponent()
dataGrid.ItemsSource = Drive.Drives
End Sub
如果我只添加一个示例驱动器,哪个工作正常
drivelist.Add(New Drive("Name",0, 0, 0), "location", "date"))
但是,由于我想解析XML,这是我的代码。这是我的驱动器类:
Public Shared Async Function Drives() As Task(Of List(Of Drive))
Dim drivelist As New List(Of Drive)
Dim folderpicked As StorageFolder
Try
folderpicked = Await StorageApplicationPermissions.FutureAccessList.GetItemAsync(ReadSetting("folderStorageToken"))
Catch ex As Exception
Debug.WriteLine("Fehler: " & ex.Message)
folderpicked = Nothing
End Try
Dim xmlfiles As List(Of StorageFile) = Await folderpicked.GetFilesAsync()
For Each file In xmlfiles
''Process files
Next
Return Await Task.Run(Function() drivelist)
End Function
它可能是异步编程的东西,但我对此非常新。谢谢你的帮助!
您可以通过ctor对Async
例程进行阻止调用,如下所示:
Dim drivesResult = Drives().GetAwaiter().GetResult()
这有效地迫使例程同步执行。如果这不是您想要的,那么您需要探索不同的替代方案,例如:评论中的建议。