如何显示在控制台中运行的时间?

时间:2011-04-19 13:58:39

标签: c# console-application timespan

C# 我需要在进程执行时显示运行时间,显示秒数增加,通常为:00:00:01,00:00:02,00:00:03 .....等。

我正在使用此代码:

var stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();

//here is doing my process
stopwatch.Stop();

当进程停止时,我显示时间为ELAPSED,其中包含:

TimeSpan ts = stopwatch.Elapsed;

......而且这个:

{0} minute(s)"+ " {1} second(s)", ts.Minutes, ts.Seconds, ts.Milliseconds/10.

这显示了已用完的总时间,但我需要显示在控制台中运行的时间。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

尝试

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (true)
{
    Console.Write(stopwatch.Elapsed.ToString());
    Console.Write('\r');
}

更新

防止显示毫秒:

        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();
        while (true)
        {
            TimeSpan timeSpan = TimeSpan.FromSeconds(Convert.ToInt32(stopwatch.Elapsed.TotalSeconds));
            Console.Write(timeSpan.ToString("c"));
            Console.Write('\r');
        }

答案 1 :(得分:3)

如果我理解正确,您希望在工作仍在进行时不断更新控制台上的时间跨度。那是对的吗?如果是这样,您将需要在单独的线程中执行工作,或者在单独的线程中更新控制台。我见过的最好的线程参考之一是http://www.albahari.com/threading/

希望这有帮助。