我需要每隔几分钟自动发起一次事件 . 我知道我可以使用Windows Forms应用程序中的Timers.Elapsed事件执行此操作,如下所示 .
using System.Timers;
namespace TimersDemo
{
public class Foo
{
System.Timers.Timer myTimer = new System.Timers.Timer();
public void StartTimers()
{
myTimer.Interval = 1;
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
myTimer.Start();
}
void myTimer_Elapsed(object sender, EventArgs e)
{
myTimer.Stop();
//Execute your repeating task here
myTimer.Start();
}
}
}
我已经google了很多,并努力在UWP中找到相同的东西 .
2 回答
以下使用DispatcherTimer的代码段应提供等效功能,该功能在UI线程上运行回调 .
当没有必要在UI线程上更新而你只需要一个计时器时,你可以使用ThreadPoolTimer,就像这样
最近我解决了类似的任务,当我在UWP应用程序中需要定期计时器事件时 .
即使您使用ThreadPoolTimer,您仍然可以从timer事件处理程序对UI进行非阻塞调用 . 它可以通过使用Dispatcher对象并调用其RunAsync方法来实现,如下所示:
代码段取自本文:Create a periodic work item .
我希望它会有所帮助 .