gpt4 book ai didi

.net - 一个应用程序中有更多 DispatcherTimers

转载 作者:行者123 更新时间:2023-12-01 10:07:07 24 4
gpt4 key购买 nike

我有一个应用程序的行为类似于自动刷新。它检查电子邮件、新视频、笑话等。

我的客户希望以不同的时间间隔检查这些单个元素。例如,每分钟发送一次电子邮件,每小时发送一次视频,等等。因此,他应该可以选择自己将时间间隔写到文本框中,并通过选中相应的复选框开始/停止刷新。

应用程序是用 wpf 编写的。我的问题是,添加更多 DispatcherTimers(DT) 是更好的选择,每个 elements 一个还是坚持只使用一个 DT 并且在勾选功能制作开关?

此外,我假设 DT 的 tick 方法运行主线程。我对吗?如果可能的话,在不同线程的 tick 方法中运行操作是否更好?

最佳答案

尽量简单。只要检查新元素不耗时,只需为每个元素类别使用一个 DispatcherTimer 及其自己的 Tick 处理程序(当然,如果您不有数百个类别)。

如果检查操作很耗时,它会阻塞 Tick 处理程序,从而阻塞 UI 线程。那么你可以使用一个 System.Timers.Timer每个元素类别并在计时器的 Elapsed 处理程序(而不是 Tick)中执行新元素检查。由于计时器在不同线程(来自线程池)上运行,因此您必须与 UI 线程同步:

private void VideosTimerElapsed(object sender, ElapsedEventArgs e)
{
// check for new videos...
Dispatcher.BeginInvoke(new Action(UpdateUI));
}

private void UpdateUI()
{
// update UI components
}

关于.net - 一个应用程序中有更多 DispatcherTimers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9292513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com