我的申请表上有TextBlock
。我想每秒更新一次以显示当前时间。
我该怎么办?我首先要创建一个System.Thread.Timer
的实例并更新文本......
clockTimer = new Timer(o =>
{
Dispatcher.BeginInvoke(() =>
{
currentTime.Text = DateTime.Now.ToShortTimeString();
});
}, null, 0, 1000);
但是可以每秒拨打Dispatcher
吗?
如果我使用绑定它的行为是什么?性能比调用Dispatcher
更好吗? (考虑每隔几次调用Dispatcher
几次绑定)
答案 0 :(得分:3)
您可以改用DispatcherTimer。
这样的事情:
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = TimeSpan.FromMilliseconds(1000);
dt.Tick += (s, e) => { currentTime.Text = DateTime.Now.ToShortTimeString(); };
dt.Start();
这样做不应该有害,只是不要在你的嘀嗒事件中徘徊太久。
另外,如果你在绑定中执行它,你将需要有一个类型的计时器来更新你的绑定属性,所以,虽然我总是喜欢数据绑定直接操纵控件,但它不应该'无论哪种方式。
答案 1 :(得分:2)
“可以每秒调用Dispatcher吗?”
这是值得商榷的 如果有必要运行应用程序,那么你必须 但是,移动设备只有在电池供电时才有用。您的代码所做的每一个操作最终都会使用更多功能。如果你可以编写(或设计)应用程序而不需要做那么多工作,那么你最终会避免更快地耗尽电池。
所有移动开发背后的一般原则是不做任何你不需要的工作,这样你就可以延长电池续航时间。