Как вызвать system. threading. timer, когда система спит в C# winforms?
Мое требование состоит в том, чтобы очистить некоторые данные, показанные в datagird view, когда в 12 часов вечера полночь. это рабочая система, не находящаяся в состоянии приостановки (сна). Как может сработать система.Нарезание резьбы.Таймер, когда система спит?
Что я уже пробовал:
System.Threading.Timer timer; public void PurgeData(DateTime dt) { try { WallBoardApp.LogInfo("Purge started"); if (WallBoardApp.Instance.ObjSettings.IsPurgeDataonMidnight) { WallBoardApp.LogInfo("WallBoardApp.Instance.ObjSettings.IsPurgeDataonMidnight"); System.Threading.TimerCallback callback = new TimerCallback(ProcessTimerEvent); bool is24HourTime = System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortTimePattern.Contains("H"); if (is24HourTime) { if (DateTime.Now < dt) { WallBoardApp.LogInfo("DateTime.Now < dt" + dt + DateTime.Now.ToLocalTime() + "24 hour format"); timer = new System.Threading.Timer(callback, null, (dt - DateTime.Now.ToLocalTime()),TimeSpan.FromHours(24)); } } else { WallBoardApp.LogInfo("DateTime.Now < dt" + dt + DateTime.Now.ToLocalTime() + "12 hour format"); timer = new System.Threading.Timer(callback, null, (dt - DateTime.Now.ToLocalTime()), TimeSpan.FromHours(12)); } } } catch (Exception ex) { WallBoardApp.LogException("UnityApplicationSuite", "PurgeData()", ex); } } private void ProcessTimerEvent(object obj) { try { WallBoardApp.LogInfo("Purge ProcessTimerEvent started"); ClearWallboardData(); WallBoardApp.LogInfo("Clear wallboard data"); NetworkLost(); WallBoardApp.LogInfo("Purge data finished"); WallBoardApp.LogInfo("Auto restart At purge Executing."); if (WallBoardApp.Instance.ObjUpdate.IsDownloadComplete && WallBoardApp.Instance.ObjSettings.IsAutoUpdate && WallBoardApp.Instance.ObjSettings.IsAutoRestartAtPurge) { WallBoardApp.LogInfo("Auto restart At purge Executed."); Application.Restart(); Application.Exit(); } PurgeData(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59)); WallBoardApp.LogInfo("Purge data started"); } catch (Exception ex) { } }
В приведенном выше коде ProcessTimerEvent запускается в полночь