首页 > 解决方案 > 在单击事件功能上更改按钮内容不起作用c#

问题描述

Sooo 我的问题如下,我在按钮单击事件上运行一个函数,我想简单地更改按钮内容以向最终用户显示东西正忙于加载但在函数中运行一些代码也会使其变得“无响应”一种方式,我做了一些研究并尝试async voidawait没有工作,这是我的代码示例:

private void Clicked_Example(object sender, RoutedEventArgs e)
{
    button1.Content = "Loading...";   //I need this to be shown before proceeding...

    //Sooo here I am running some MySQL queries and Mqtt messages and... uhhm well the random usual stuff...

    button1.Content = "Done!";    //I need this then to be changed after
}

遗憾的是,我在从线程更新 UI 方面经验不足。请任何帮助将不胜感激,谢谢!

标签: c#wpf

解决方案


您正在 UI 线程上运行查询,这会阻止 UI 线程绘制您的更新。您需要将查询放在后台线程上。有很多方法可以做到这一点。使用async/ awaitwithTask是一种简单的方法:

private async void Clicked_Example(object sender, RoutedEventArgs e)
{
    button1.Content = "Loading...";
    await Task.Run(() =>
        {
            // run your queries here, but do not update your UI within this block
        }
    );
    button1.Content = "Done!";
}

推荐阅读