问题标签 [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 回答
166 浏览

c# - 定期检查是否所有线程都已完成

我有一个多线程应用程序,我希望能够使用计时器定期检查是否所有线程都已完成,然后再启动一个新线程,即:

这是我所到之处。CheckThreads 方法需要做什么来检查它们是否完成?我正在考虑类似于检查它们的函数,例如:

我在正确的轨道上吗?这是解决这个问题的正确方法吗?或者我应该改用 System.Timers.Timer 吗?另外,我想做这个定期检查的函数形式是静态的。任何帮助,将不胜感激。

0 投票
2 回答
9192 浏览

c# - C# - 如何暂停应用程序直到计时器完成?

我有一个需要等待特定时间的应用程序,但如果需要,我还需要能够取消当前操作。我有以下代码:

下面是计时器完成事件的事件处理程序:

while 循环只会无限循环,直到计时器完成或发出取消请求。我想保留此功能,但我不想在等待计时器完成时永远循环。我的计时器可以设置为以多天的间隔运行,因此循环这么长时间没有意义。

还有另一种方法吗?

我知道我可以这样做:

但是,这将是阻塞的,我将无法提出取消请求。

编辑:所以为了详细说明我需要在这里暂停什么/为什么是对我的应用程序的更详细的解释。基本上我想要一个定期执行“工作”的应用程序。因此,根据下面提供的答案之一,如果我做了这样的事情:

然后我的服务/控制台应用程序将启动并进入一个无限循环,整天设置计时器。以前,我实际上是在以下位置停止执行任何其他代码:

这至少有效,但如前所述,可能是暂停线程的资源密集型方式。基本上我真正需要的是一种方法来阻止我的线程,直到计时器结束。

EDIT2:这是我的最终实现,使用等待句柄似乎对我有用......

0 投票
2 回答
2687 浏览

c# - 为什么 System.Timers.Timer 在触发 Elapsed 事件时会创建多个线程?

当我创建一个System.Timers.Timer诸如...

间隔设置为 1000 的结果:

间隔设置为 2000 的结果:

我看到该Elapsed事件在触发时显示了不同的线程。尽管当我将值更改为Interval更高的值,例如 2000(而不是 1000)时,它似乎保持在同一个线程上。

这是为什么?

我想要一个在它自己的线程上触发但只在一个线程而不是多个线程上触发的计时器。

0 投票
0 回答
157 浏览

c# - 具有不同间隔的多个计时器,写入同一个目标

我正在编写一个 Windows 服务,它将执行不同的数据导入逻辑,从不同的数据源最终将其写入单个目标,即 MS CRM 实例。现在,我认为唯一有问题的是写给 CRM 的部分。从不同(有时是相同的)数据源同时读取数据应该不是问题(我可能错了......)所以我想出了一种方法来确保没有并发写入(创建或更新) 到 CRM。

这是目前的总体设计:

服务启动时会发生什么:

当计时器的时间间隔到期时会发生什么:

Execute在对象扩展的所有方法中BaseSyncStrategy,每次我想在目标 CRM 实例中更新或创建某些东西时,我都会这样做:

以及确保(我认为)没有并发写入 CRM 的简单代码:

这是声音设计还是有更好的方法来做到这一点?

0 投票
2 回答
4296 浏览

c# - UWP 等效于 Timer.Elapsed 事件

我需要每隔几分钟自动触发一个事件。我知道我可以在 Windows 窗体应用程序中使用 Timers.Elapsed 事件来做到这一点,如下所示。

我用谷歌搜索了很多,并努力在 UWP 中找到与此等效的内容。

0 投票
1 回答
1414 浏览

c# - C# Timer.Elapsed 事件连续触发两次

作为系统“自检”应用程序的一部分,我有一个应用程序每 60 秒调用一次 DLL 中的静态方法。当我手动运行这些方法时,它们都在不到 10 秒的时间内完成。我的问题是 timer.elapsed 事件触发了两次,一个接一个。除此之外,每经过一次计时器,事件就会再触发一次。(例如,第一次是 2 次触发,第二次是 3 次,第三次是 4 次等)我尝试设置 timer.AutoReset = false 以及设置 timer.Enabled = false 在经过的事件开始时,然后将其设置为 true在活动结束时。我试过重置事件的间隔。我发现的每个帖子都表明上述操作应该已经解决了这个问题。谁能帮我找到我缺少的东西?

0 投票
0 回答
312 浏览

c# - System.Timers Timer 什么时候被处理掉?

如标题所述, Timer 何时被System.Timers处置?

在我将运行控制台应用程序并简单地使用以下代码的情况下

计时器会在某个时候被丢弃还是永远“活着”?注意:“永远”是指应用程序关闭之前。

0 投票
3 回答
149 浏览

c# - C#:实现格式良好的时间字符串的最佳方法?

我正在写这个问题,因为我正在寻求最好的方法来做到这一点。我的程序中有很多这些,我想创建一个方法来将包含一秒计时器的 Int32 转换为格式良好的字符串。

因此,例如,如果我的计时器 int 是在让我们说一个像 16429 这样的随机数,它将是:

如果是 600,它将是:

如果是60,那就是

如果是 172801,它将是

如果是32,那就是

我希望每个单词末尾的 "s" 像 "minute"、"second" 和 "day" 只在它不等于 1 时才放 S,因此实际上不需要正确发音. 我也只希望在需要时添加天数和小时数以及其他内容,因此如果计时器以秒为单位低于 1 天,它只会显示小时、分钟和秒,或者需要什么。

实现这样的目标的最佳方法是什么?我在下面有这个功能,但它非常混乱,最多只能达到几分钟和几秒钟,而不是几小时或几天:

这样做的最佳方法到底是什么?

0 投票
1 回答
592 浏览

visual-studio - 在 Xamarin 轮播页面中放置一个计时器

我想在 Xamarin Forms 轮播页面中放置一个计时器,以便在用户什么都不做时自动进行“滑动”。

作为 Xamarin 的新手,我不完全确定是否可以像使用 Xamarin 一样通过在代码隐藏中创建 System.Timer 来做到这一点。

自动滑动应在 3 秒后发生,并以 3 秒的间隔在轮播中滑动。

谁能告诉我这是否可行?

0 投票
2 回答
58 浏览

c# - 获取具有计时器成员的类项目列表中项目的索引

我正在尝试查找触发计时器的索引。

我在 Program.cs 中创建了一个类条目列表

这是名为“Entry”的类,其构造函数位于 Entry.cs

列表中的项目是随机创建的。现在列表(列表索引)中的每个计时器都将启动,然后在 10000 毫秒后,将调用 CallDeleteEntry。

我需要做的是在计时器经过 10000 毫秒时将其索引传递给 CallDeleteEntry,这样它就可以删除列表的该项目行。

我认为必须在此处修改某些内容才能使其正常工作。

列表将如下所示

列表索引 | 条目

0 | 包| pkt定时器

1 | 包| pkt定时器

2 | 包| pkt定时器

3 | 包| pkt定时器

4 | 包| pkt定时器