目录
4.? (MethodInvoker)delegate ()
????????使用DateTime结构的Now静态属性可以轻松地获取当前系统时间。
????????DateTime结构的Now静态属性只是得到一个系统时间对象,该时间对象不会随着系统时间的变化而变化,如果要动态显示系统时间,可以使用计时器间隔地获取系统时间对象并显示。
????????可以适当地使用线程替代Timer控件。在窗体应用程序开发过程中,应当尽量避免使用窗体线程做高强度的运算或IO操作,如果窗体线程参与了过多的运算,会导致用户的操作不能及时分配到资源,用户界面会出现卡或无响应情况。
//使用DateTime的Now静态属性动态获取系统时间
namespace _053
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Load += Form1_Load;
}
private void Form1_Load(object? sender, EventArgs e)
{
SuspendLayout();
//
// Form1
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(394, 41);
Name = "Form1";
StartPosition = FormStartPosition.CenterScreen;
Text = "动态获取系统时间";
ResumeLayout(false);
Thread thread = new(//创建线程
() => //使用lambda表达式
{
while (true) //无限循环
{
Invoke( //操作窗体线程
(MethodInvoker)delegate ()//使用匿名方法
{
Refresh();//刷新窗体
Graphics graphics = CreateGraphics(); //创建绘图对象
graphics.DrawString("系统时间:" + //在窗体中绘出系统时间
DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒"),
new Font("Times New Roman", 14),
Brushes.Blue,
new Point(10, 10));
});
Thread.Sleep(1000);//线程挂起1秒钟
}
})
{
IsBackground = true //将线程设置为后台线程
};
thread.Start(); //线程开始执行
}
}
}
? ? ? ? ?
1秒钟一刷新。
????????创建和控制线程,设置其优先级并获取其状态。?
?????????初始化 Thread 类的新实例。
public Thread (System.Threading.ThreadStart start);
参数
start ThreadStart
表示开始执行此线程时要调用的方法的 ThreadStart 委托。
例外
ArgumentNullException
start 参数为 null。