我需要每隔几分钟自动触发一个事件。我知道我可以使用 Windows 窗体应用程序中的 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 中与此等效的东西。
最佳答案
以下代码片段使用 DispatcherTimer应提供等效功能,在 UI 线程上运行回调。
using Windows.UI.Xaml;
public class Foo
{
DispatcherTimer dispatcherTimer;
public void StartTimers()
{
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
}
// callback runs on UI thread
void dispatcherTimer_Tick(object sender, object e)
{
// execute repeating task here
}
}
当不需要在 UI 线程上更新而您只需要一个计时器时,您可以使用 ThreadPoolTimer , 像这样
using Windows.System.Threading;
public class Foo
{
ThreadPoolTimer timer;
public void StartTimers()
{
timer = ThreadPoolTimer.CreatePeriodicTimer(TimerElapsedHandler, new TimeSpan(0, 0, 1));
}
private void TimerElapsedHandler(ThreadPoolTimer timer)
{
// execute repeating task here
}
}
关于c# - UWP 相当于 Timer.Elapsed 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41033783/