问题标签 [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 投票
2 回答
695 浏览

c# - c#带有Timer的Windows服务不执行代码

我有以下代码,Windows服务启动时不执行

我在这里找到了解决方案,但它们对我不起作用。

在程序中:

当我在 Programm 类中评论开始“ServiceBase [] ...”的部分并取消注释“Processing ...”时,它工作正常。

但是当我的代码作为 Windows 服务运行时 - 什么也没有发生

0 投票
1 回答
901 浏览

c# - System.Timers.Timer 和夏令时

我有一些从表格中读取HH:MM:SS的计时器,以确定每天何时运行。

例如:
定时器 A 需要每周一 13:00:00 运行
定时器 B 需要每周二 02:00:00 运行
定时器 C 需要每小时运行一次

因此,在我的代码中,我计算出当前时间是多少,然后计算从DateTime.Now()计时器应该运行的下一次出现的毫秒数。当计时器的Elapsed事件完成后,它会重新计算下一次应该运行的时间。由于时间变化,这在本周末造成了一个问题。

有一个更好的方法吗?会DateTime.UtcNow是更好的选择吗?也许将数据库中的时间字符串转换为 UTC 时间,然后找出DateTime.UtcNow()而不是之间的区别DateTime.Now()

0 投票
2 回答
433 浏览

c# - 再次使用联锁

我在这一点上阅读了很多答案,但我还没有找到解决方案。

我有一个带有计数器属性的类,它的缓存值有问题。甚至 volatile 似乎也不起作用:

好吧,似乎 onTimer 缓存了 _threadsCounter 变量,因为输出是:

为什么我到了 16 岁?我通过更改代码解决了这个问题:

但为什么会有这种行为?

0 投票
1 回答
166 浏览

c# - 等待 UDP 接收时我的计时器缓冲区会溢出吗?

我正在编写一个软件,它将从 UDP 数据包接收数据,然后将其写入文件。这是我作为控制台应用程序编写的示例代码,用于测试 UdpClient 类。

我发现如果没有收到 UDP 数据包,while 循环将在 Receive(ref groupEP) 函数处暂停。只有当接收到 UDP 数据包时,它才会继续打印“已接收”。

但是对于实际程序(WPF),为了节省资源,我使用的是计时器。目前更新接口和文件工作正常,但我一直想知道如果每 100 毫秒调用一次计时器会发生什么,而 UDP 数据包仅每 1 秒接收一次(假设我不知道什么时候会收到 UDP所以我选择100ms)。这不会导致每 1 秒有 9 个冗余计时器调用,这会导致溢出吗?目前该应用程序在这个场景中运行良好,但我想了解为什么以及是否有任何可能的后果。

0 投票
1 回答
632 浏览

function - ISE 和 PowerShell 控制台中的 msgbox 函数结果不一致

我正在摆弄计时器对象和消息框并撞到了一堵砖墙。

我正在尝试通过可重用的功能来管理计时器对象和弹出窗口。

我首先单独测试了这些功能中的大部分,并在小部分中进行了测试。由于一切正常,我决定把所有东西都串起来。

在一起,它似乎不起作用,所以我将功能分解为基础:

我仍然无法运行脚本,因为它在 Elapsed 操作 ( $Thirtyaction) 期间一直“挂起”。它在 PowerShell 控制台中显示的最后一件事是:actionaction2. 所以我认为问题出在 box 函数中,但是:

  • 如果我用 ISE 调用脚本,它将按预期运行
  • 如果我先执行函数文件然后执行文件,它将再次在 (first/YesNo) msg​​Box 处停止/挂起
  • 如果我在控制台中手动输入 msgBox 函数然后启动文件,它会显示 msgBoxes,但不会else正确执行语句中的代码(在显示 (second/OKonly)msgBox 后停止)

我想不出任何有意义的方式,我花了很多时间尝试调试/将其向上切换/将其降低等。

编辑1:新的一天和更多的信息。

我将功能更改为 windows.Forms 但没有运气。然后我开始打印所有函数和脚本部分的线程 ID,瞧:

Timerevent$action触发时触发的 ,在新的 PowerShell 运行空间中运行,因此不再访问之前定义的变量和函数。

我不确定如何解决这个问题或解决它,但至少我知道问题出在哪里。欢迎任何想法,并感谢已经回答并给了我正确方向提示的人!

Edit2 的解决方案和解决方法

感谢另一位用户,如果找到了如何从脚本块中控制计时器属性的问题的答案$Thirtyaction

关联

我可以通过简单地将脚本块中的函数文件点源来使用 MsgBox 函数

我对变量的解决方法是使用三个环境变量。我很确定这既不是聪明也不是最佳实践,但在我的特殊情况下不应该成为问题并且它有效。

例如,这里是我当前的$Thirtyaction脚本块:

0 投票
2 回答
3187 浏览

c# - 如何在 C# 中创建计时器而不使用 System.Timers.Timer 或 System.Threading.Timer

System.Timers.Timer是否可以在不使用or的情况下在 C# 中创建计时器System.Threading.Timer

我在 Unity 项目 (C#) 中使用计时器,并且正在尝试导出 WebGL 项目。Unity WebGL 导出中暂时不支持线程。

似乎使用System.Timers.Timer > Elapsed事件在单独的线程上运行。(?)

0 投票
1 回答
75 浏览

c# - 在您的类中有两个 System.Timer.Timer 对象并捕获异常

我有一个有两个System.Timers.Timer对象的类。我现在看到的是,一个抛出的异常被另一个捕获。这是正确的行为吗?

0 投票
1 回答
934 浏览

c# - Windows 服务中未触发 ElapsedEventHandler

在遵循本教程之后,我开发了非常简单的窗口服务: http ://www.c-sharpcorner.com/UploadFile/naresh.avari/develop-and-install-a-windows-service-in-C-Sharp/

但是我注意到 ElapsedEventHandler 从未像教程那样被解雇:

0 投票
1 回答
117 浏览

c# - C# 通过 timer.Elapsed 和单击调用方法

我对定时器有一些问题。

这是我的代码:

UploadState就是这样实现的

我正在使用 System.Timers.Timer ,它应该以 10 分钟的间隔调用 Start 方法(在我的助手类中实现)。

当用户单击特定按钮时,也会调用此方法。

还有我的麻烦。

定时器调用 Start 方法 => UploadHelper.UploadState = UploadState.UploadOn。

而且应该被_lock锁住。

但是当用户在 UploadData() 期间单击时,我看到 UploadState = UploadState.UploadOff 并且没有被锁定。

这段代码有什么问题?

为什么计时器调用此方法时状态不同?

0 投票
2 回答
1035 浏览

c# - 如何正确地每分钟执行一次线程?

这个问题分为两部分。我有一个控制台应用程序,它从多个服务器获取信息并将此信息保存到数据库。为了使这同时执行,我使用了线程。我正在尝试每分钟自动执行一次。

搜索stackoverflow我发现这可以工作:

但是,这并没有按预期工作,它只执行一次。如果我更改为例如:

或者:

然后它工作。我究竟做错了什么?

这个问题的第二部分:

当这实际上像我上​​面显示的那样起作用时,会发生其他事情。该进程连续运行,并在 474 个线程后崩溃并说系统内存不足。

我尝试为此使用线程睡眠,但是当我这样做时,它在运行一次后停止执行。

如果它可能有帮助,包括这个:

我怎样才能使这项工作?