namespace PizzaSoftware.UI
{
/// <summary>
/// Interaction logic for LoginForm.xaml
/// </summary>
public partial class LoginForm : Window
{
public LoginForm()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Timer timer = new Timer(1000);
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Enabled = true;
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
lblCurrentTime.Content = DateTime.Now.ToShortTimeString();
}
}
}
Basically, I'm just trying to have a label on my form that displays the current time. I'm using a Timer as suggested in another of my SO question.
I'm receiving the error in title. What can I do to solve this?
Didn't realize this was a WPF app. You need to get a hold of the Dispatcher, which you can do in the Constructor:
Well, the simplest approach is to use a
DispatcherTimer
- which will fire itsTick
event in the dispatcher thread:Alternatively, you can use
Dispatcher.Invoke
/BeginInvoke
to execute a delegate in the dispatcher thread... but that will be more complicated. This would be a better approach if you needed to do significant work on each timer tick and then just update the UI with the result - but as you're not doing much work at all here, it's fine to just do it all in the UI thread.