I have a question regarding the use of dispatcherTimer in code. See my situation below:
private void CheckShow(object sender, System.Windows.RoutedEventArgs e) { DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1); dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); dispatcherTimer.Start(); string etime = DateTime.Now.Second.ToString(); } private void dispatcherTimer_Tick(object sender, EventArgs e) { if(System.IO.File.Exists(@"C:\Default.xml")) { LoadingRecent.Text = "Loading Default Show..."; LoadBar.Opacity = 100; string time1 = DateTime.Now.Millisecond.ToString(); string time2 = DateTime.Now.Second.ToString(); double huidigetijd = System.Convert.ToDouble(time2 + "." + time1); LoadBar.Value = huidigetijd; Remainingnummer.Text = Convert.ToString(10 - DateTime.Now.Second); string etime = DateTime.Now.Second.ToString(); if (etime == "10") { var provider = (XmlDataProvider)this.Resources["CUEData"]; var loadfilepath = @"C:\Default.xml"; provider.Source = new Uri(loadfilepath, UriKind.Absolute); Storyboard Hoofdvenster = (Storyboard)Resources["Hoofdvenster"]; Hoofdvenster.Begin(this, true); }
As you can see in the top function, I start the timer, and then in the tick I do some things when the timer reaches ten seconds. However, I want to stop the dispatcher in this if statement, but then I get a contextual error.
So, how do I stop the timer in another function?
Update: I tried to fit into your solution, but I get a link to an object not set to an instance error
public void CheckShow(object sender, System.Windows.RoutedEventArgs e) { DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1); dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); dispatcherTimer.Start(); string etime = DateTime.Now.Second.ToString(); if (etime == "13") { dispatcherTimer.Stop(); LoadingRecent.Text = "You are currently working on a show. Press New or Load to create or load a different show"; LoadBar.Opacity = 0; } } private DispatcherTimer dispatcherTimer; private void dispatcherTimer_Tick(object sender, EventArgs e) { if(System.IO.File.Exists(@"C:\Default.xml")) { LoadingRecent.Text = "Loading Default Show..."; LoadBar.Opacity = 100; string time1 = DateTime.Now.Millisecond.ToString(); string time2 = DateTime.Now.Second.ToString(); double huidigetijd = System.Convert.ToDouble(time2 + "." + time1); LoadBar.Value = huidigetijd; Remainingnummer.Text = Convert.ToString(10 - DateTime.Now.Second); string etime = DateTime.Now.Second.ToString(); if (etime == "10") { var provider = (XmlDataProvider)this.Resources["CUEData"]; var loadfilepath = @"C:\Default.xml"; provider.Source = new Uri(loadfilepath, UriKind.Absolute); Storyboard Hoofdvenster = (Storyboard)Resources["Hoofdvenster"]; Hoofdvenster.Begin(this, true); dispatcherTimer.Stop(); }
source share