計時器需要作爲線程運行,並且它會在每個固定的時間間隔觸發一個事件。我們如何在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