Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- using System.ComponentModel;
- using System.Threading;
- namespace Calendar
- {
- /// <summary>
- /// Logique d'interaction pour MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- BackgroundWorker dater;
- TimeSpan last;
- public MainWindow()
- {
- InitializeComponent();
- dater = new BackgroundWorker();
- dater.WorkerReportsProgress = true;
- dater.WorkerSupportsCancellation = true;
- dater.DoWork += new DoWorkEventHandler(dater_DoWork);
- dater.ProgressChanged += new ProgressChangedEventHandler(dater_ProgressChanged);
- dater.RunWorkerCompleted += new RunWorkerCompletedEventHandler(dater_RunWorkerCompleted);
- last = new TimeSpan();
- this.DateLabel.Content = this.last.ToString();
- }
- void dater_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- this.last += (TimeSpan)e.Result;
- }
- void dater_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- this.DateLabel.Content = e.UserState.ToString();
- }
- void dater_DoWork(object sender, DoWorkEventArgs e)
- {
- BackgroundWorker worker = sender as BackgroundWorker;
- DateTime startDate = DateTime.Now;
- while (true)
- {
- if (worker.CancellationPending)
- break;
- else
- worker.ReportProgress(1, DateTime.Now.Subtract(startDate) + this.last);
- Thread.Sleep(10);
- }
- e.Result = DateTime.Now.Subtract(startDate);
- }
- private void play_Executed(object sender, ExecutedRoutedEventArgs e)
- {
- if (!this.dater.IsBusy)
- this.dater.RunWorkerAsync();
- }
- private void stop_Executed(object sender, ExecutedRoutedEventArgs e)
- {
- if (this.dater.IsBusy)
- this.dater.CancelAsync();
- }
- private void pause_Executed(object sender, ExecutedRoutedEventArgs e)
- {
- if (this.dater.IsBusy)
- this.dater.CancelAsync();
- this.last = new TimeSpan();
- this.DateLabel.Content = this.last.ToString();
- }
- private void CanExecute(object sender, CanExecuteRoutedEventArgs e)
- {
- Control target = e.Source as Control;
- if (target != null)
- e.CanExecute = true;
- else
- e.CanExecute = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement