我如何计算使用DateTime已经过了多少时间?
我有开始操作的按钮单击事件:我如何计算使用DateTime已经过了多少时间?
private void Diagnose_Click(object sender, EventArgs e)      { 
      processfinish = false; 
      timer2.Enabled = true; 
      timerCount = 0; 
      count = 0; 
      countBack = 5; 
      CreateZip.Enabled = false; 
      DriverVerifier.Enabled = false; 
      Diagnose.Enabled = false; 
      Diagnose.Text = "PROCESSING PLEASE WAIT"; 
      if (this.backgroundWorker1.IsBusy == false) 
      { 
       this.backgroundWorker1.RunWorkerAsync(); 
      } 
      Logger.Write("***** OPERATION STARTED *****"); 
     } 
而BackgroundWorker的的完成情况:即启动时,其获得的完成工作
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)      { 
       processfinish = true; 
       Logger.Write("***** OPERATION ENDED *****"); 
     } 
和Timer1 Tick事件事件:
private void timer1_Tick(object sender, EventArgs e)      { 
      count++; 
      Diagnose.Text = "PROCESS HAS FINISHED" + " " + countBack--; 
      if (count == 6) 
      { 
       Diagnose.Text = "COLLECT INFORMATION"; 
       Diagnose.Enabled = true; 
       CreateZip.Enabled = true; 
       ViewLogFile.Enabled = true; 
       DriverVerifier.Enabled = true; 
       timer1.Enabled = false; 
      } 
     } 
我想在我的记录器的文本文件中看到这样的:
Logger.Write("Operation Time Was: " + timepassed); 而且timepassed将显示分钟和第二例如:
运行时间那句话:05:21
回答:
只需使用一个StopWatch。 Start()它开始计时,Stop()它当你完成后,然后得到Elapsed时间和format it。
回答:
你可以做
DateTime startTime = DateTime.Now; 然后你做加工做
DateTime endTime = DateTime.Now; //This will give you something like 2hrs 15min or 15 days 11 hours 10 min ect 
TimeSpan timePassed = endTime.Subtract(startTime); 
这里后是MSDN文档http://msdn.microsoft.com/en-us/library/8ysw4sby.aspx
的优势,使用这种方法(比它特别采用其他DateTime就像你上面指定的那样)是没有定时器运行。你真的没有在这里使用任何资源。您只需在流程开始时和结束时获取DateTime。然后减去它们以获得差异。容易。
回答:
(因为它最好不是线程安全可言,所以如果你有2个操作在同一时间的工作将无法正常工作没有)
声明一个私有变量的最简单方法:
DateTime _start; 然后在您的Diagnose_Click方法,一个值分配给它:
_start = DateTime.Now; 而在你backgroundWorker1_RunWorkerCompleted,你可以有时间经过这样的:
TimeSpan elapsed = DateTime.Now - _start; 而且你可以直接在你的日志文件中使用像写:
Logger.Write("Operation time was: " + elapsed.Minutes + "mn " + elapsed.Seconds + "s"); 回答:
// Create new stopwatch     Stopwatch stopwatch = new Stopwatch(); 
    // Begin timing 
    stopwatch.Start(); 
    // Do something 
    for (int i = 0; i < 1000; i++) 
    { 
     Thread.Sleep(1); 
    } 
    // Stop timing 
    stopwatch.Stop(); 
    // Write result 
    Console.WriteLine("Time elapsed: {0}", 
     stopwatch.Elapsed); 
以上是 我如何计算使用DateTime已经过了多少时间? 的全部内容, 来源链接: utcz.com/qa/257251.html







