В настоящее время этот код работает, я полагаю, он не работает должным образом, потому что я не понял, как принудительно обновлять поток пользовательского интерфейса при каждом изменении непрозрачности в кнопке.
private void BtnStart_Click(object sender, RoutedEventArgs e) {
// Create a timer and add its corresponding event
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += TimerFade_Elapsed;
timer.Interval = 750;
// Want a new thread to run this task on so
// the main thread doesn't wait.
Task task = new Task(() => timer.Start());
task.Start();
//r.SingleThread();
}
private void TimerFade_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
// Access UI thread to decrease Opacity on a button from a different thread.
Dispatcher.Invoke(() => {
if (btnStart.Opacity != 0.0) {
btnStart.Opacity -= 1.0;
// code here to force update the GUI.
} else {
System.Timers.Timer t;
t = (System.Timers.Timer)sender;
t.Stop();
}
});
}
Код работает, однако визуально, это не так. Я подозреваю, что это связано с тем, что я не обновляю графический интерфейс при внесении изменений.