C#在界面上显示系统时间,使用定时器刷新
timer.Elapsed+=newElapsedEventHandler(timer_Elapsed);privatevoidtimer_Elapsed(objects...
timer.Elapsed+=new ElapsedEventHandler(timer_Elapsed);
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
string time = DateTime.Now.ToString();
this.BeginInvoke((EventHandler)delegate
{
labelX2.Text = "系统时间:" + time;
});
}
catch (Exception){ }
}
我想问一下,使用this.beigininvoke会不会在主线程和子线程中切换线程花费很多时间,有没有好的方法呀 展开
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
string time = DateTime.Now.ToString();
this.BeginInvoke((EventHandler)delegate
{
labelX2.Text = "系统时间:" + time;
});
}
catch (Exception){ }
}
我想问一下,使用this.beigininvoke会不会在主线程和子线程中切换线程花费很多时间,有没有好的方法呀 展开
展开全部
如果你用的是Form命名空间下的那个timer,应该都不需要invoke,直接修改text就行,因为那个timer就是在主线程里运行的。如果是其他的timer,且是在后台线程里运行,那刷新text必须用invoke,且invoke必然比直接修改text要消耗大些,这个没有其他办法。但是如果你只是刷新一个text,根本不会感觉到卡的,瞬间就刷完了。
更多追问追答
追问
恩,我用的Timer.timer 但是我一开始程序没加this.invoke,也能显示出来,但是我重装系统之后发现今天后面的时间不显示出来了,所以才提出这个问题的,我也不知道啥原因一开始能显示。其他代码我都没有改啊
追答
那现在改成invoke能显示出来吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询