Как я могу дважды изменить фоновое изображение кнопки в событии MouseLeftButtonDown?
Я пишу следующий обработчик событий в MainWindow.xaml.cs
, Я хочу добиться такого эффекта: когда бизнес-логика работает, фоновое изображение кнопки запуска переключается на powerOnOff1.png
когда бизнес-логика закончена, фоновое изображение переключается обратно на powerOnOff0.png
,
private void Run_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//set run button background image to powerOnOff1.png indicates business logic is going to run.
BitmapImage ima0 = new BitmapImage(new Uri("picture/powerOnOff1.png", UriKind.Relative));
image.Source = ima0;
//business logic
......
//restore Runbutton background image to powerOnOff0.png indicates business logic is finished.
BitmapImage ima1 = new BitmapImage(new Uri("picture/powerOnOff0.png", UriKind.Relative));
image.Source = ima1;
}
Выше кодов не работает. Это всегда показывают powerOnOff0.png
изображение на заднем плане. Требуется ли многопоточность?
1 ответ
Решение
Требуется ли многопоточность?
Да. Вам необходимо выполнить бизнес-логику в фоновом потоке. Самый простой способ сделать это - начать новую задачу и ждать ее:
private async void Run_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//set run button background image to powerOnOff1.png indicates business logic is going to run.
image.Source = new BitmapImage(new Uri("picture/powerOnOff1.png", UriKind.Relative));
await Task.Run(() =>
{
//business logic here
});
//restore Runbutton background image to powerOnOff0.png indicates business logic is finished.
image.Source = new BitmapImage(new Uri("picture/powerOnOff0.png", UriKind.Relative));
}