如何异步运行计时器任务?

时间:2014-09-19 10:36:36

标签: c#-4.0 windows-phone-8

您正在使用C#和xaml开发Windows Phone 8应用。 我以前的团队开发了一些代码,他们在定时器控制中使用了很多方法。 当它正在更新时,所有方法都在调用并阻塞UI。 有没有其他方法可以异步使用计时器,因此无法阻止UI。 提前致谢

3 个答案:

答案 0 :(得分:0)

您应该使用“xaml绑定”来更新UI

答案 1 :(得分:0)

Windows Phone中有几个Timer类。

System.Windows.Threading.DispatcherTimer:在UI线程上运行,并在执行时使UI无响应。

System.Threading.Timer:在ThreadPool线程上执行,因此无法直接更新UI。有关如何进行跨线程调用以更新UI的示例,请参阅链接中的示例。

还有一个ThreadPoolTimer,似乎就像System.Threading.Timer一样 - 在ThreadPool线程上运行,只是有不同的方法。但是我还没用过它。

因此,要回答您的问题,如果计时器事件阻止了用户界面,则可能是DispatcherTimer,将其替换为System.Threading.Timer,请参考上一个链接中的代码示例。

答案 2 :(得分:0)

您是否尝试使用DispatcherTimer

How to Increment timer asynchronously ?

否则你可以使用CountdownTimer

How do you run a synchronous timer in C#?

正如@kennyzx所说,有很多方法可以做到,但选择权在你手中。

a sample on CountdownTimer from the Toolkit