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

c# - System.Timers.Timer 如何获取到 Elapse 的剩余时间

使用 C#,如何从System.Timers.Timer对象获取剩余时间(在 elapse 事件发生之前)?

换句话说,假设我将计时器间隔设置为 6 小时,但 3 小时后,我想知道还剩多少时间。我如何让计时器对象显示剩余时间?

0 投票
2 回答
11306 浏览

c# - SignalR - 检测客户端是否与集线器断开连接的服务器端方法?

System.Timers.Timer在客户端关闭包含活动连接的窗口/选项卡后,我想停止在 SignalR 集线器中运行的一个。

我尝试通过调用服务器代码向服务器发送一个布尔值来通知服务器客户端是否仍然连接,但它当前不工作。

服务器端:

这是可能的吗?我在正确的轨道上吗?我怀疑这与匿名代表有关timer.Elapsed,但我不完全确定。

0 投票
1 回答
706 浏览

c# - 具有长时间运行任务的单独线程中的计时器

我有一个 Windows 服务,它在 start 方法中创建一个计时器并触发计时器立即执行。计时器是一项长时间运行的任务,因此 services.msc 中的启动服务会被检测为错误。它认为下面的计时器在单独的线程中运行并且服务应该立即启动?

如果我删除下面的行,它可以正常工作,但我希望服务在服务启动后触发。

删除此行会使问题消失,但我想要这个:

0 投票
2 回答
2068 浏览

c# - 多个计时器已过问题

我有一个如下定义的计时器。计时器执行一个长时间运行的任务。我遇到的问题是,当计时器运行时,间隔再次过去,另一个计时器执行开始,即_timer_Elapsed。定时器完成后如何让定时器执行一个间隔。现在的方式可能会同时发生多个计时器执行,这会导致我的代码出现各种问题。

0 投票
1 回答
8003 浏览

c# - 确定 Timer 是否正在运行

在此链接中,它显示了如何确定计时器是否正在运行。对我来说,它不起作用。

我在静态类中声明了计时器,如图所示

}

在我的服务启动时,我设置了计时器属性

然后我检查它是否在我的一种方法中运行,但即使它正在运行,代码也总是错误的

0 投票
1 回答
240 浏览

c# - FileSystemWatcher .Net 3.5

刚刚从 .Net 1.1 切换到 3.5 的 Win 服务活跃了 10 年,处理了超过 200 万个文件。我有一个异步类,它使用 FileSystemWatcher 事件处理程序将图形打印到 PDFPrinter,现在在它自己的 STA 线程上,归档 PDF 文件。PDF 创建是异步的,因为现有的客户端应用程序方法允许在 DateTime 间隔内创建所有丢失的 PDF。

(1) 如果没有在 STA 线程上分离事件处理程序,服务就会挂起。

(2) 在几秒钟的间隔内只有几个 PDF 到达,它工作正常。将其增加到 5 个 PDF,不可避免地会有一个文件无法存档。将其增加到 15 个 PDF,并且有几个不会存档(所有这些都在测试台中)。在移动文件之前,我检查它是否存在,需要 2 次成功检测(PDFPrinters 往往会产生幻像文件创建事件)。我还检查对文件的独占访问权限。更新:我在 COM 交互代码的不同部分尝试了另一种 STA 线程创建方法(通过参数化的类和方法),并且遇到了同样的不可靠性问题(仅完成了大约 50% 的线程)。

对于 PDF,我很想设置一个 Timer 来归档废弃文件,但不清楚何时启动 Timer 以避免多个 Timer 尝试执行相同的归档任务(存在 Oracle 并发问题的额外危险);这种设计感觉有点像腰带和吊带(负面因素)。

这是一个如此普遍的范例,要变得健壮应该不难!寻找关于 (1) 的启示并帮助使新的 STA 线程可靠地完成 (2)。

伪码

0 投票
2 回答
455 浏览

vb.net - 保持应用程序运行

我试图让应用程序保持打开状态,直到出现文件。我使用计时器每 60 秒检查一次 FTP 服务器(文件可能需要 13 到 15 分钟才能显示出来)。

while 循环有效……但它占用了我 50% 的 CPU。试图找出另一种方法。我正在考虑添加 Windows.Form 并使用 Application.Run(),但想知道 Application.Exit() 是否会关闭我的应用程序。

可以将 CheckStatusTimer.Stop() 放入我的 CheckStatusTimer_Tick() 子例程的完成逻辑部分。如何防止调用函数返回,直到计时器停止?

感谢 jlimited

0 投票
1 回答
44 浏览

c# - 在特定时间调用方法或操作

我有一项需要在每天上午 12 点运行一次的操作。我已经通过使用条件检查约束匹配实现了相同的功能DateTime.Now.Hour == someValue;但是,我不希望 while 循环运行 n 次以进行一次操作。我已经让线程进入睡眠状态但我仍然对解决方案不满意。尝试使用计时器也不会奏效。我们是否有任何称为时钟或时间的概念以及在相应时间调用特定操作的事件。请说清楚。

0 投票
3 回答
386 浏览

c# - 定时器随机不触发

我有看起来像这样的代码

一切正常,只是偶尔会在此控制台输出中看到计时器事件之间存在巨大延迟。

这是一个相当大的应用程序的一小部分。System.Timers.Timer 存在相同的行为,事实上,在整个应用程序中的其他不同时间都会发生。我将线程 ID 添加到这个特定计时器的控制台输出中,希望能更深入地了解为什么在正确的一秒事件中随机经过 17.5 秒的时间。

有什么我明显做错了吗?也许我可以收集更多数据来弄清楚为什么我的计时器表现得很有趣?

这里的任何建议将不胜感激。

0 投票
1 回答
219 浏览

vb.net - 使用带有 System.Timers.Timer 的 ToastForms 的问题

在我的应用程序中,我使用了 ToastForms 类向用户显示弹出通知以获取实时警报。我一直在尝试从数据库中轮询警报并经常将它们呈现给用户的最佳方法。我查询数据库,找到所有新警报,然后每隔 10 秒左右将这些警报作为弹出窗口呈现给用户。我一直在尝试为此过程确定最佳方法/实践,因为我不想在不断轮询数据库时导致任何高 CPU 使用率或程序挂起。

在进行了一些试验后,我决定将我的想法转移到使用 System.Timers.Timer 并将我的代码放在 Get_Alerts 过程中:

上面的代码过去可以在普通的 Forms.Timer 上正常工作,但是,自从将它移到 System.Timers.Timer 后,我发现 ToastForm 会弹出很好,但似乎挂起并且永远不会关闭:

在此处输入图像描述

它没有产生任何错误,所以我不确定故障在哪里。我假设这与在与我的计时器不同的线程上打开 ToastForm 有关,但我不确定。

任何帮助,将不胜感激。谢谢。

更新 下面是运行 Toastform 的代码。我从网上找到的一些代码中导入了这个类,所以它不是我的代码。我只是传递论点。在我介绍 System.Timers.Timer 之前,一切正常(并且正在关闭)。