在uwa vb.net中返回async函数中的列表

问题描述 投票:0回答:1

我试图解析一些xml文件并将结果返回到UWA中的数据网格。代码构建正常,但在运行时返回

无法转换'System.Threading.Tasks.Task1[System.Collections.Generic.List1 [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

它可能是异步编程的东西,但我对此非常新。谢谢你的帮助!

vb.net asynchronous async-await win-universal-app
1个回答
0
投票

您可以通过ctor对Async例程进行阻止调用,如下所示:

Dim drivesResult = Drives().GetAwaiter().GetResult()

这有效地迫使例程同步执行。如果这不是您想要的,那么您需要探索不同的替代方案,例如:评论中的建议。

© www.soinside.com 2019 - 2024. All rights reserved.