【问题标题】:Timer Event Not firing C# UWP [duplicate]计时器事件未触发 C# UWP [重复]
【发布时间】:2021-04-23 16:31:53
【问题描述】:

我有一个 UWP 应用程序,但我似乎无法触发我的定时事件。

下面是代码:

public PresencePage()
{
    InitializeComponent();
    Loaded += PresencePage_Loaded;
    
}

private void TimedEvent()
{
    aTimer = new System.Timers.Timer();
    aTimer.Interval = 20000;
    aTimer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
    aTimer.AutoReset = true;

}
private async void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
    SampleItems.Clear();

    List<Employee> employees = new List<Employee>();
    List<PresenceModel> presences = new List<PresenceModel>();

    //Not firing
}


private async void PresencePage_Loaded(object sender, RoutedEventArgs e)
{
    SampleItems.Clear();

    //get mock
    //var data = await SampleDataService.GetMasterDetailDataUserAsync();
    List<Employee> employees = new List<Employee>();
    List<PresenceModel> presences = new List<PresenceModel>();

    TimedEvent();
}

定时事件应该触发并再次运行PresencePage 以重新填充列表。当我检查TimedEvent() 被调用但它只是通过并且从不调用TimerElasped

ii) 计时器运行以重新填充员工和状态列表,这是在 UWP 中重新填充它们的最佳方式,因为它会导致整个页面被刷新。欢迎任何建议谢谢。

【问题讨论】:

  • 您的代码示例不完整,但没有证据表明您曾经启动过计时器。查看副本。

标签: c#


【解决方案1】:

您需要以aTimer.Enabled = true; 开始计时。将其添加到您的 TimedEvent() 或适当的位置以启动计时器。要停止计时器,您需要设置aTimer.Enabled = false;

参考Timer.Enabled Property

private void TimedEvent()
{
    aTimer = new System.Timers.Timer();
    aTimer.Interval = 20000;
    aTimer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
    aTimer.AutoReset = true;  
    // Add below line to start timer.
    aTimer.Enabled = true;  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多