我如何计算使用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