目录
一、TimeSpan结构的Days、Hours、Minutes及Seconds属性
在程序设计过程中,经常需要在主窗体中动态地显示程序的运行时间。
一、TimeSpan结构的Days、Hours、Minutes及Seconds属性
1.Days属性
TimeSpan结构的Days属性用来获取由当前TimeSpan结构表示的整天数。 语法格式如下:
cs
publie int Days {get;}
参数说明
属性值:整型数值,表示此TimeSpan结构的天数部分。返回值可以是正数也可以是负数。
2.Hours属性
TimeSpan结构的Hours属性用来获取由当前TimeSpan结构表示的整小时数。 语法格式如下:
cs
public int Hours{get;}
参数说明
属性值:整型数值,表示当前TimeSpan结构的小时分量。返回值的范围为-23~23。
3.Minutes属性
TimeSpan结构的Minutes属性用来获取由当前TimeSpan结构表示的整分钟数。语法格式如下:
cs
public int Minutes{get;}
参数说明
属性值:整型数值,表示当前TimeSpan结构的分钟分量。返回值的范围为-59~59。
4.Seconds属性
TimeSpan结构的Seconds属性用来获取由当前TimeSpan结构表示的整秒数。 语法格式如下:
cs
public int Seconds {get;}
参数说明
属性值:整型数值,表示当前TimeSpan结构的秒分量。返回值的范围为-59~59。
二、确定程序运行时间的方法
在窗体Load事件中获取系统时间。然后,使用线程获取系统时间并与窗体载入时获取的时间相减,会得到一个TimeSpan对象,此TimeSpan对象就是程序运行的时间。最后,使用线程在StatusStrip中动态显示程序的运行时间。
1.实例源码
cs
// 用TimeSpan的Days、Hours、Minutes及Seconds属性确定程序的运行时间
namespace _066
{
public partial class Form1 : Form
{
private StatusStrip? statusStrip1;
/*public*/ static ToolStripStatusLabel? toolStripStatusLabel1;
/*public*/ static DateTime? datetime;//声明时间字段
public Form1()
{
InitializeComponent();
Load += Form1_Load;
}
private void Form1_Load(object? sender, EventArgs e)
{
//
// toolStripStatusLabel1
//
toolStripStatusLabel1 = new ToolStripStatusLabel
{
Name = "toolStripStatusLabel1",
Size = new Size(116, 17),
Text = "程序运行的时间是:"
};
//
// statusStrip1
//
statusStrip1 = new StatusStrip
{
Location = new Point(0, 89),
Name = "statusStrip1",
Size = new Size(364, 22),
TabIndex = 0,
Text = "statusStrip1"
};
statusStrip1.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel1 });
statusStrip1.SuspendLayout();
//
// Form1
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(364, 111);
Controls.Add(statusStrip1);
Name = "Form1";
StartPosition = FormStartPosition.CenterScreen;
Text = "用TimeSpan属性确定程序的运行时间";
statusStrip1.ResumeLayout(false);
statusStrip1.PerformLayout();
ResumeLayout(false);
PerformLayout();
CalculateTime();
}
private static void CalculateTime()
{
datetime = DateTime.Now;
Thread thread = new(
() => //使用Lambda表达式创建线程
{
while (true) //无限循环
{
TimeSpan timespan = (TimeSpan)(DateTime.Now - datetime);
Parallel.Invoke(
() => //使用Lambda表达式调用窗体线程
{
toolStripStatusLabel1!.Text = string.Format(//显示程序启动时间
"系统已经运行: {0}天{1}小时{2}分{3}秒",
timespan.Days, timespan.Hours,
timespan.Minutes, timespan.Seconds);
});
Thread.Sleep(1000);//线程挂起1秒钟
}
})
{
IsBackground = true
};
thread.Start();
}
}
}