-2

我已经为我的应用程序编写了正常运行时间,它只是显示随机数?

程序时间是这段代码

public static DateTime TimeStarted { get; set; }

    public static void Time(string[] args)
    {
        //set start time
        Program.TimeStarted = DateTime.Now;
    }

然后这是一个显示正常运行时间的类

case "uptime":
{
    TimeSpan sinceStarted = (TimeSpan)(DateTime.Now - Program.TimeStarted);
    double secondsRunning = sinceStarted.TotalSeconds;
    string message = string.Format("{0} Days, {1} hours, and {2} minutes", sinceStarted.Days, sinceStarted.Hours, sinceStarted.Minutes);
    Session.SendData(UserAlertModernComposer.Compose("Stats", message));
    return true;
}

当正常运行时间约为 20 分钟时,它目前表示 735096 天 7 小时 34 分钟,

4

3 回答 3

3

没有必要让自己保持这个价值。它已经在Process.StartTime属性中可用。您只需要获取当前进程的句柄

Process p = Process.GetCurrentProcess();
TimeSpan sinceStarted = (TimeSpan)(DateTime.Now - p.StartTime);
string message = string.Format("{0} Days, {1} hours, and {2} minutes", 
          sinceStarted.Days, sinceStarted.Hours, sinceStarted.Minutes);
于 2013-08-17T12:44:01.673 回答
0

考虑将Stopwatch 类用于您的目的。它在 System.Diagnostics 命名空间中,应该更适合您。

using System;
using System.Diagnostics;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        Thread.Sleep(10000);
        stopWatch.Stop();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);
    }
}
于 2013-08-17T12:43:44.303 回答
0

正如我在评论中提到的,您永远不会调用您的 Time 方法。这意味着 TimeStarted 将具有 DateTime.MinValue。DateTime.MinValue 等价于01/01/0001 00:00:00. 因此你得到的结果。

您需要做的是在program.cs中编写以下行

Program.TimeStarted = DateTime.Now;

休息很好

于 2013-08-17T12:51:06.317 回答