2016-05-12 72 views
0

我需要檢查應用程序是否在不到15分鐘前打開。如果我爲此選擇後臺任務,則Windows不保證該任務不會被終止。有沒有辦法獲得獨立於系統時間的時間戳?就像在android中一樣,我們可以從啓動開始獲取時間,這在這裏很容易使用。 我正在開發一個贏10應用程序(C#)。如何在應用程序不在前臺時在窗口中獲得正確的時間間隔?

+0

15分鐘後你想運行什麼任務? – Irfan

+0

我想檢查一個標誌(存儲在數據庫中)是否爲真。 – sant

+1

爲什麼不把當前時間保存在應用程序的設置中,然後在恢復/啓動時檢查當前時間並與保存的值進行比較? – Romasz

回答

0

我建議你使用一個DispatcherTimer類,這在MSDN上有很好的文檔記錄。您創建一個DateTimeOffset startTime;作爲全局變量。然後,每隔30秒創建一個Tick事件,以驗證所經過的時間:

DateTimeOffset time = DateTimeOffset.Now; 
TimeSpan span = time - startTime; 

所有的細節打造蜱的活動我提供DispatcherTimer的鏈接是有據可查的。

+0

你確定我可以使用它嗎?我的應用程序可能不在前臺,我不想將當地時間作爲參考,因爲有人可能會手動更改它。 – sant

+0

即使應用程序不在前臺,我也很確定它可以正常工作,但您可以使用較小的間隔(10秒而不是30秒,而1分鐘而不是15秒)對其進行測試。此外,您可以通過驗證當前時間是否小於30秒前的事件時間來檢測該人是否改變了當地時間。 – DomDev

+0

我剛剛測試過我的應用程序!調度程序計時器和事件仍然在後臺工作!你提到的問題是真實的,可以改變PC時間,並相應地影響DispatcherTimer。但是,只能更改PC上的分鐘數,因此如果您每15秒鐘執行一次檢查時間的事件,則可以輕鬆檢測出該人是否欺騙了時間。 – DomDev

0

TickCount是我用來解決這個問題。這會給出自啓動以毫秒爲單位的時間。

相關問題