DispatcherTimer属于UI线程,Timer非UI线程,运行在后台。
DispatcherTimer里面执行等待动作或者时间过长,可能会导致UI假死。
但是 Timer的 TimerCallback 委托指定希望 Timer 执行的方法。 计时器委托在构造计时器时指定,并且不能更改。
所以用什么要随情况而定。
下面是实现代码:
public partial class MainPage : PhoneApplicationPage
{
DispatcherTimer Dtimer;
Timer timer;
// 构造函数
public MainPage()
{
InitializeComponent();
Dtimer = new DispatcherTimer();
Dtimer.Interval = TimeSpan.FromSeconds(1);
Dtimer.Tick+=new EventHandler(timer_Tick);
Dtimer.Start();
timer= new Timer(CallBalk,text,1000,1000);
}
void timer_Tick(object sender,EventArgs e)
{
Debug.WriteLine(DateTime.Now.ToShortTimeString());
Debug.WriteLine("DispatcherTimer");
}
void CallBalk(object state)
{
//Dispatcher.BeginInvoke();
Debug.WriteLine("Timer");
}
}