我在GDI +中开发了一个图形控件,并在其中使用了一个计时器..现在我将它转换为 WPF。但当我继续搜索计时器时,WPF中没有计时器......我怎样才能解决这个问题呢?可以选择使用吗?
的问候, rangana。
答案 0 :(得分:1)
我可以毫无问题地使用System.Threading.Timer
。
以下是每1秒执行一次的计时器示例:
using System.Threading;
...
TimerCallback timerCallBack = OnTimerCallback;
Timer timer = new Timer(timerCallBack, null, 0, 1000);
...
private void OnTimerCallback(object state)
{
...
}
如果要更新计时器中任何与UI相关的元素,则必须使用Dispatcher.BeginInvoke
,因为计时器在其自己的线程中运行,并且UI由启动计时器的主线程拥有。这是一个例子:
private void OnTimerCallback(object state)
{
Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Normal,
(ThreadStart) (() => Background = Brushes.Black));
}
答案 1 :(得分:1)
您要查找的计时器是DispatcherTimer http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer.aspx
但是,如果你计划使用计时器来驱动动画,那么在WPF(只有Google WPF动画)中有更好的方法可以做到这一点。