我正在尝试解析一些xml文件并将结果返回到UWA中的datagrid。代码构建良好,但运行时返回
无法转换类型为'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
这可能与异步编程有关,但是我对此很陌生。感谢您的帮助!
答案 0 :(得分:0)
您可以通过ctor对Async
例程进行阻塞调用,如下所示:
Dim drivesResult = Drives().GetAwaiter().GetResult()
这有效地迫使例程同步执行。如果那不是您想要的,那么您将需要探索其他选择,例如评论中的建议。