Не работает функция изменения содержимого кнопки при нажатии кнопки c# - PullRequest
0 голосов
/ 04 августа 2020

Так вот, моя проблема заключается в следующем: я запускаю функцию для события нажатия кнопки, я хочу просто изменить содержимое кнопки, чтобы показать конечному пользователю, что материал загружен, но запуск некоторого кода в функции также делает его " не отвечает "в каком-то смысле, я провел небольшое исследование и попробовал async void и await, но ничего не вышло, это пример моего кода:

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
}

К сожалению, я не очень имеет опыт обновления пользовательского интерфейса из потоков. Пожалуйста, любая помощь будет принята с благодарностью, спасибо!

1 Ответ

2 голосов
/ 04 августа 2020

Вы выполняете свои запросы в потоке пользовательского интерфейса, что не позволяет потоку пользовательского интерфейса рисовать ваши обновления. Вам нужно будет поместить запросы в фоновый поток. Есть несколько способов сделать это. Использование async / await с Task - это один простой способ:

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!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...