static void Main(string[] args) { var chrono = ChronographFactory.GetChronograph("test"); // Use Start/StopCapture methods chrono.Start(); TheOperation(); chrono.Stop(); PrintChronoStatistics(chrono.ActiveSession); // Use MeasureAction method chrono.MeasureAction(() => { TheOperation(); }); PrintChronoStatistics(chrono.ActiveSession); // Measure a bunch more actions for (int i = 0; i < 10; ++i) { TimeSpan elapsed = chrono.MeasureAction(TheOperation); Console.WriteLine($"\tAction measured at {elapsed.TotalMilliseconds:N0} ms"); } Task.Run(async() => { await TheAsyncOperation(); }).Wait(); var snapshot = chrono.Restart(); PrintChronoStatistics(snapshot); Console.WriteLine("After reset, the new stats should be zeroes"); PrintChronoStatistics(chrono.ActiveSession); }
public MainWindowViewModel() { Chronographies = new ObservableCollection <AbstractChronograph> { ChronographFactory.CreateCP502Chronograph(), ChronographFactory.CreateCP520Chronograph() }; //if (IsInDesignMode) //{ // Chronograph = Chronographies[0]; // AvailableComPorts = new ObservableCollection<string> // { // "COM1", // "COM2", // "COM3" // }; // ComPort = "COM1"; // Departures.Add(new RaceTimeViewModel(new RaceTime // { // Order = 1, // Departure = "00.00.00.000" // })); // Departures.Add(new RaceTimeViewModel(new RaceTime // { // Order = 2, // Departure = "00.02.00.000" // })); // Arrivals.Add(new RaceTimeViewModel(new RaceTime // { // Order = 3, // Departure = "00.00.00.000" // })); // Arrivals.Add(new RaceTimeViewModel(new RaceTime // { // Order = 4, // Departure = "00.02.00.000" // })); // Logs.Add("log 1"); // Logs.Add("log 2"); //} InitializeTraceFileMenuItemCommand = new RelayCommand(ExecuteInitializeTraceFileMenuItemCommand); ClearListMenuItemCommand = new RelayCommand(ExecuteClearListMenuItemCommand); QuitMenuItemCommand = new RelayCommand(ExecuteQuitMenuItemCommand); RefreshAvailableCOMPortsCommand = new RelayCommand(ExecuteRefreshAvailableCOMPortsCommand); OpenChronographLinkCommand = new RelayCommand(ExecuteOpenChronographLinkCommand, CanExecuteOpenChronographLinkCommand); CloseCOMPortsCommand = new RelayCommand(ExecuteCloseCOMPortsCommand, CanExecuteCloseCOMPortsCommand); OpenExcelCommand = new RelayCommand(ExecuteOpenExcelCommand, CanExecuteOpenExcelCommand); LockSheetPropertiesCommand = new RelayCommand(ExecuteLockSheetPropertiesCommand, CanExecuteLockSheetPropertiesCommand); UnlockSheetPropertiesCommand = new RelayCommand(ExecuteUnlockSheetPropertiesCommand, CanExecuteUnlockSheetPropertiesCommand); ExecuteRefreshAvailableCOMPortsCommand(); ExecuteInitializeTraceFileMenuItemCommand(); _serialPortManager.SerialPort.DataReceived += SerialPort_DataReceived; }