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会不会在主线程和子线程中切换线程花费很多时间,有没有好的方法呀
展开
 我来答
百度网友1c6e06f
2014-12-25 · TA获得超过2894个赞
知道小有建树答主
回答量:695
采纳率:66%
帮助的人:653万
展开全部
如果你用的是Form命名空间下的那个timer,应该都不需要invoke,直接修改text就行,因为那个timer就是在主线程里运行的。如果是其他的timer,且是在后台线程里运行,那刷新text必须用invoke,且invoke必然比直接修改text要消耗大些,这个没有其他办法。但是如果你只是刷新一个text,根本不会感觉到卡的,瞬间就刷完了。
更多追问追答
追问
恩,我用的Timer.timer  但是我一开始程序没加this.invoke,也能显示出来,但是我重装系统之后发现今天后面的时间不显示出来了,所以才提出这个问题的,我也不知道啥原因一开始能显示。其他代码我都没有改啊
追答
那现在改成invoke能显示出来吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式