c# - UWP 相当于 Timer.Elapsed 事件

标签 c# .net uwp uwp-xaml system.timers.timer

我需要每隔几分钟自动触发一个事件。我知道我可以使用 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/

相关文章:

uwp - 从桌面应用程序恢复挂起的 UWP 应用程序

c# - 一劳永逸,使用 `Task.Run` 或只调用一个没有 `await` 的异步方法

c# - Psexec 在 C# 代码中返回拒绝访问错误

c# - 在简单的对象创建时崩溃

c# - 如何枚举 PropertyGrid 项?

.net - 在 Windows 中以编程方式重启 USB 设备

.net - 管理徽章打印应用程序的 WinWord 文档内容。最佳实践

c# - 可以减少类型参数的数量吗?

c# - 如何在 UWP 中检查有线互联网连接?

c# - 在 XAML 中将 CallMethodAction 中的 TargetObject 设置为父 DataContext 中的 ViewModel