如何在 WPF 事件处理程序中使用异步调用

How to use async calls in WPF event handlers

我在带有异步调用的 WPF 中有这个事件处理程序。

private void Button_Click(object sender, RoutedEventArgs e)
{
    var folderStructure = restApiProvider.GetFolderStructure();
}

下面是GetFolderStructure()的实现:

public async Task<IList<string>> GetFolderStructure()
{
    var request = new RestRequest(string.Empty, Method.Get);
    var cancellationTokenSource = new CancellationTokenSource();
    var response = await client.GetAsync(request, cancellationTokenSource.Token);

    return JsonConvert.DeserializeObject<IList<string>>(response.Content);
}

我需要从 GetFolderStructure() 获取数据才能在应用程序中继续,但这是我得到的输出:

如果我添加 folderStructure.Wait();,调用不会自行完成,整个应用程序会卡住。但是,如果我将 var folderStructure = restApiProvider.GetFolderStructure(); 更改为 restApiProvider.GetFolderStructure();,调用会立即完成并且不会发生卡住。

我错过了什么?

使调用方法异步并等待结果:

private async void Button_Click(object sender, RoutedEventArgs e)
{
    var folderStructure = await restApiProvider.GetFolderStructure();
}