如何在特定時間生成事件?例如,假設我想在上午8:00生成一個警報,通知我上午8:00(或在任何給定時間通知我當前時間的事件)。如何在C#中的特定時間生成警報?
27
A
回答
46
var dt = ... // next 8:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));
的callback
代表將在下一次是上午8:00,此後每24小時被調用。
請參閱this SO question如何計算接下來的上午8:00發生。
0
private void Run_Timer()
{
DateTime tday = new DateTime();
tday = DateTime.Today;
TimeSpan Start_Time = new TimeSpan(8,15,0);
DateTime Starter = tday + Start_Time;
Start_Time = new TimeSpan(20, 15, 0);
DateTime Ender = tday + Start_Time;
for (int i = 0; i <= 23; i++)
{
Start_Time = new TimeSpan(i, 15, 0);
tday += Start_Time;
if (((tday - DateTime.Now).TotalMilliseconds > 0) && (tday >= Starter) && (tday <= Ender))
{
Time_To_Look = tday;
timer1.Interval = Convert.ToInt32((tday - DateTime.Now).TotalMilliseconds);
timer1.Start();
MessageBox.Show(Time_To_Look.ToString());
break;
}
}
}
我們可以利用這個功能獲得定時器運行時間或將其更改爲在特定時間運行:d
1
確實有你的程序來生成警報?另一種方法是使用Scheduled Task (in Windows)來生成警報。您可能需要寫一個小程序,它從主應用程序的數據文件等收集的任何信息
但使用這種方法的幾個主要好處:
- 你沒有寫任何代碼來支持該功能。您可以利用操作系統中內置的某些內容。該示例適用於Windows,但其他操作系統具有相同的功能。您可以將您的開發和支持工作集中在您自己的代碼上。
- 您的主應用程序不一定要運行才能觸發任務。
9
詳細闡述dtb的答案,這是我如何實現它。
private void Form1_Load(object sender, EventArgs e)
{
System.Threading.TimerCallback callback = new TimerCallback(ProcessTimerEvent);
//first occurrence at
var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 10, 0, 0);
if (DateTime.Now < dt)
{
var timer = new System.Threading.Timer(callback, null,
//other occurrences every 24 hours
dt - DateTime.Now, TimeSpan.FromHours(24));
}
}
private void ProcessTimerEvent(object obj)
{
MessageBox.Show("Hi Its Time");
}
相關問題
- 1. 如何在特定日期和特定時間發出警報
- 2. 特定時間間隔重複報警
- 3. 在特定時間每天重複報警(報警管理器)
- 4. 如何使用報警管理器在特定時間停止報警?
- 5. 報警管理器:如何在特定時間呼叫報警管理器?
- 6. 如何生成時鐘的「C」的特定時間編程
- 7. 如何在特定時間2天后停止報警服務?
- 8. 如何在特定時間致電警報管理器?
- 9. 如何在特定時間停止重複報警
- 10. 在特定的時間間隔重複報警
- 11. 如何在特定的div中顯示時間(由JavaScript生成)?
- 12. 如何在android中的特定時間和日期得到報警?
- 13. android:在某些特定時間間隔內報警remian停止
- 14. Laravel用於生成特定時間的報告
- 15. 定時器間隔警報
- 16. 在選定時間的iPhone報警
- 17. 如何設置在特定時間顯示通知的報警管理器
- 18. 在文件下載中生成警報
- 19. 我想使用報警管理器在特定時間設置報警,但立即發起報警?
- 20. 在C中生成報告#
- 21. 在C#中生成報告
- 22. 生成自定義編譯時間警告C#
- 23. 在特定時間內發出警報Android應用程序
- 24. 如何在警報對話框生成器中居中文本?
- 25. 如何取消特定警報?
- 26. 給定時間的報警服務
- 27. 如何使用javax.swing.JProgressBar在特定時間啓動並在特定時間完成?
- 28. 如何在一定時間後自動關閉警報React Native
- 29. 在特定的時間間隔自動生成發票 - Rails
- 30. 自動生成excel文件在一天中的特定時間
我知道下面的鏈接提到它,但可能想澄清,這是System.Threading.Timer而不是System.Windows.Forms.Timer – McAden 2009-08-18 23:33:28
,如果我從現在開始提供最後8.00將它的工作?那麼給出一個負數? – Jaanus 2013-03-20 20:31:29
@Jaanus不,我只是試了一下,它引發了一個異常。如果dt
2013-05-23 16:21:38