gpt4 book ai didi

c# - 单击按钮期间是否可以等待异步任务?

转载 作者:可可西里 更新时间:2023-11-01 03:07:49 24 4
gpt4 key购买 nike

我的应用程序中有一个刷新按钮,它使用一些异步方法来更新显示的项目列表。问题是我不能为按钮单击的事件处理程序返回 Task 类型,所以我只剩下一个 async void 方法。因此,用户可以点击刷新按钮,然后在重新填充列表时选择一个项目,这将导致错误。

处理按钮点击的代码开始:

    private async void Button_Click_1(object sender, RoutedEventArgs e)
{


await ViewModel.CreateMessageCommand();

那么有什么方法可以正确地等待这个任务完成吗?

最佳答案

由于控件的事件处理程序通常返回 void,因此您需要以不同的方式处理它。这通常意味着,在像您这样的情况下,您需要在加载内容时禁用全部或部分 UI,即:

private async void Button_Click_1(object sender, RoutedEventArgs e)
{
// Make the "list" disabled, so the user can't "select an item" and cause an error, etc
DisableUI();

try
{
// Run your operation asynchronously
await ViewModel.CreateMessageCommand();
}
finally
{
EnableUI(); // Re-enable everything after the above completes
}
}

关于c# - 单击按钮期间是否可以等待异步任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com