问题标签 [system.timers.timer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
14940 浏览

c# - System.Timers.Timer 的 Elapsed 回调可以异步吗?

是否有可能(甚至合理)进行System.Timers.Timer异步方法的回调?就像是:

它编译(显然是一个很好的起点),但我不确定我是否理解后果。计时器会await在重置计时器之前回调吗?

0 投票
0 回答
805 浏览

c# - 如何从 WPF 中的计时器事件打开新窗口

如果满足某些条件,我会尝试显示一个新窗口,使用System.Timers.Timer.

我对 WPF 很陌生,但从我之前的问题中了解到,调度计时器使用 UI 线程并且适用于 UI 组件,而 System.Timers.Timer 事件在线程池线程上运行。我之前使用调度计时器完成了此操作,但这导致我的程序在尝试退出时停止响应。

意识到错误消息:"The calling thread must be STA, because many UI components require this."可能是指我无法使用 System.Timers.Timer 打开新窗口这一事实,我尝试执行以下操作:

这会导致相同的错误消息。我需要使用不同的计时器类型吗?

0 投票
2 回答
947 浏览

c# - C#,WinForms,等待计时器

试图了解 C# Winforms 中的计时器和虚拟点击。我想让程序有一个用户输入的时间值(textbox1),然后等待这段时间并单击鼠标,然后增加数字计数器(textbox2)。

在下面的代码中,数字计数器立即变为 10,但点击永远不会结束,尽管设置了一个 while 循环以在 10 处停止点击。我基本上只是希望程序等待一个稍微随机的时间(时间输入到时间输入 +3),单击鼠标,增加计数器,然后选择一个新的随机数并继续,直到总共点击 10 次。

0 投票
5 回答
3229 浏览

c# - System.Timers.Timer 不工作编辑 [在 asp.net 网络表单中]

我正在使用以下代码尝试 Timer 类:-

最初,Label1.Text 为“1”。

但是当我运行应用程序时,标签的文本显示为 1 并且不会增加。

0 投票
2 回答
639 浏览

c# - Timers Elapsed 事件仅在选定的工作日

我在 Windows 服务中使用计时器,这很简单,并且可以在事件结束时将一些数据写入文件。在这个应用程序中,我试图实现 3 种类型的案例:

  1. 事件将每天在同一时间(给定 StartTime)触发。

  2. 将在某些特定工作日触发的事件表示我只想从给定的 StartTime 开始在星期一、星期二和星期六执行此操作。

  3. 将在某些特定月份和那些月份中触发的事件 特定工作日表示我只想在 7 月和 9 月执行此操作,但在周一、周二和周六从给定的 StartTime 开始的受限日子。

到目前为止,我实施的是案例 1,我不确定如何为案例 2 和案例 3 做同样的事情。(我认为的逻辑很奇怪)。如果我在解决案例 2 中得到一些帮助,也将有助于实施案例 3。欢迎任何其他建议。

这是我的代码:

虽然我可以轻松地实现几个小时甚至 1 天的经过事件,这是我需要通过 timeInterval 属性的恒定时间,但是在这里我没有得到如何为选定的工作日和选定的月份触发 Elapsed 事件。

0 投票
1 回答
217 浏览

c# - c# timer 始终启用性能

我想让一个计时器在一天中 100% 运行,但不确定这是否会导致问题。大多数情况下,它将每分钟打勾一次,并将 DateTime.Now 与 5 个存储值进行比较。

从理论上讲,运行此计时器是否意味着我每分钟会受到一次性能影响,或者涉及的最少代码会产生问题。

0 投票
1 回答
1993 浏览

c# - 后台工作者和 CPU 使用率

我需要每 20 秒做一些后台工作(它不必正好是 20000 毫秒,我可以允许延迟)。我正在使用执行该功能的 Backgroundworker,然后使用 Timer 再等待 20 秒:

该工作人员在软件运行期间一直处于活动状态。

问题是它占用了大部分 CPU。我注意到我的软件一直在使用大约 70% 的 CPU,而只是停用 Backgroundworker,CPU 使用率下降到 0.5%。

如何在不使 CPU 过载的情况下完成相同的工作?

0 投票
1 回答
117 浏览

c# - System.Timers.Timer Elapsed excute 命令不适用于 RelayCommand

我正在创建一个自定义用户控件,它使用计时器来计算时间并最终在视图模型中运行命令操作。

问题

当时间过去时,它运行 elapsed 事件,然后执行静态命令。

事实是,当我单击刷新按钮时,它可以进入 RefreshCommand_Executed (这是预期的)。但是,即使运行 BeginInvoke 中的代码(这是意外的) ,它也无法为触发的计时器超时事件进入此函数...

请为此提供帮助。

代码

-CustomControl.xaml.cs

-CustomControl.xaml

-MainView.xaml

-MainViewModel.cs

0 投票
0 回答
46 浏览

xamarin - Xamarin System.Thread.Timer

我正在尝试从 nuget 包中添加 System.Threading.Timer,因为它还没有在我的核心项目中。当我这样做时,我收到以下错误。

您正在尝试将此包安装到以“.NETPortable,Version=4.5,Profile78”为目标的项目中,但该包不包含与该框架兼容的程序集引用或内容文件。

不知道如何解决这个问题。可以在这方面使用一些帮助。先感谢您!

0 投票
2 回答
1234 浏览

vb.net - 如何在 Visual Basic 中暂停 System.Timer?

我在 Windows 服务中使用 system.timer 来运行通常超过计时器间隔的进程。我试图阻止计时器多次触发相同的代码,这是 system.timers 的一个已知问题。

我想要什么:计时器运行我的代码,但计时器“暂停”以等待代码完成,然后再恢复滴答声。

我有两个问题:

  1. system.timers 的工作方式是计时器将通过启动相同代码的新冗余线程来为您创建竞争条件,如果在计时器的时间间隔过去时尚未完成,则将它们堆积在您身上。

  2. 我会启动/停止计时器以防止这种情况发生,但是使用 System.Timers.Timer,一旦您停止计时器以完成处理,它就永远不会回来 - 我永远无法重新启动计时器已停止,它已被销毁并可能被收集。启用/禁用与启动/停止完全相同,结果相同。

如果在定时器的时间间隔过去时进程还没有完成,你到底如何让 system.timer 不启动相同代码的新冗余线程?显然,启动/停止(启用/禁用)计时器不是解决方案,因为它不起作用。

帮助!