计时器需要作为线程运行,并且它会在每个固定的时间间隔触发一个事件。我们如何在c#中做到这一点?如何在C#中的每个特定时间间隔触发事件?
1
A
回答
1
使用可用的多个定时器之一。 Systme.Timer作为一种通用的一个,还有其他dpending上的用户界面技术:
- System.Timers.Timer
- System.Threading.Timer
- System.Windows.Forms.Timer
- 系统。 Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
您可以检查Why there are 5 Versions of Timer Classes in .NET?对于差异的说明。
如果您需要使用mroore精度(低至1ms)的内容,您可以使用本机计时器队列 - 但这需要一些互操作编码(或对Google的非常基本的理解)。
0
我更喜欢使用微软的Reactive Framework(NuGet中的Rx-Main)。
var subscription =
Observable
.Interval(TimeSpan.FromSeconds(1.0))
.Subscribe(x =>
{
/* do something every second here */
});
而且不需要时停止计时:
subscription.Dispose();
超级简单!
1
您可以使用System.Timers.Timer
试试这个:
class Program
{
static System.Timers.Timer timer1 = new System.Timers.Timer();
static void Main(string[] args)
{
timer1.Interval = 1000;//one second
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
timer1.Start();
Console.WriteLine("Press \'q\' to quit the sample.");
while (Console.Read() != 'q') ;
}
static private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
//do whatever you want
Console.WriteLine("I'm Inside Timer Elapsed Event Handler!");
}
}
4
这里是一个小片段打印出一条消息每10秒。
using System;
public class AClass
{
private System.Timers.Timer _timer;
private DateTime _startTime;
public void Start()
{
_startTime = DateTime.Now;
_timer = new System.Timers.Timer(1000*10); // 10 seconds
_timer.Elapsed += timer_Elapsed;
_timer.Enabled = true;
Console.WriteLine("Timer has started");
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
TimeSpan timeSinceStart = DateTime.Now - _startTime;
string output = string.Format("{0},{1}\r\n", DateTime.Now.ToLongDateString(), (int) Math.Floor(timeSinceStart.TotalMinutes));
Console.Write(output);
}
}
相关问题
- 1. C#如何在特定时间触发事件?
- 2. 只在C#中的特定时间触发事件#
- 3. 特定时间触发MouseMove事件
- 4. X:以固定的时间间隔触发事件
- 5. asp.net触发事件在服务器上的时间间隔
- 6. windows phone中的GeoCoordinateWatcher在给定的时间间隔内不触发事件
- 7. 在android中查找触摸事件之间的时间间隔
- 8. 在设计时间触发事件c#
- 9. 如何在HTML视频达到某个特定时间时触发事件?
- 10. 如何在android中查找酒吧到达特定时间时触发事件
- 11. 在特定的日子和时间触发事件
- 12. 如何在特定时间每天在Slack中触发一个斜杠命令
- 13. 检查时间是否在C++的特定时间间隔?
- 14. 在每个特定时间间隔后调度r函数
- 15. 在给定时间间隔内事件发生的次数
- 16. 以最小间隔触发javascript事件
- 17. 一个特定的时间间隔
- 18. 如何在每个特定的时间间隔调用弹簧控制器?
- 19. 如何在特定的时间间隔后更新每个mysql行?
- 20. 按时间触发事件
- 21. 在C中定义的时间间隔
- 22. Cron-like库Node.js在特定时间触发事件
- 23. JavaScript-仅在特定时间后触发事件mouseenter,
- 24. 如何计算两个“keyup”事件之间的时间间隔
- 25. 如何在时间到达特定时间时触发某个功能
- 26. 执行触发器的时间间隔
- 27. Javascript:我如何制作只在特定日期和时间触发的事件?
- 28. 在特定的时间间隔
- 29. 在特定的时间间隔
- 30. C#定时器间隔每24小时
你能给我一个示例代码,它会每10秒调用一次函数f()吗? –
请注意,它可能永远不会让它每1ms执行一次。 Windows不是一个实时系统。 –
其实它会。高精度计时器是为此而设计的。有小的波动,但会自动调整。我已经成功地使用它们来安排从无记录同步源的解码堆栈重新编码的视频播放。 – TomTom