對於計划任務的執行有很多種解決方案,如利用開源Quartz作業調度框架,在SQL Server的作業等等,同時Windows的任務計划程序功能也很強大,利用此可以很方便的實現很多計划任務,除了人工進行管理和維護外,可以使用開源的TaskScheduler組件進行自動管理和維護,本文主要利用開源TaskScheduler組件進行指定windows任務計划程序的監控和運維,以保證任務計划的穩定可靠,開源TaskScheduler組件的下載地址:http://taskscheduler.codeplex.com/releases/view/110719 。
運行計划任務,會出現在windows的進程中,如下圖:
本文利用通過一個計划任務來定時監控管理另一個計划任務(結合使用Quartz.net實現),如另一個計划任務停止運行中,則
自動啟動該計划任務,檢查指定windows進程的狀態核心代碼示例如下:
using System.Diagnostics;
private static bool CheckProcessRunning(string runningProcessname) { try { bool returnValue = false; Process[] processes = Process.GetProcessesByName(runningProcessname); foreach (Process process in processes) { returnValue = true; break; } return returnValue; } catch { return false; } }
自動啟動指定計划任務的核心代碼如下:
using Microsoft.Win32.TaskScheduler;
public void CheckOAFlowSyncRunning() { try { bool IsP = CheckProcessRunning("windows計划任務名稱"); if (IsP == false) { using (TaskService ts = new TaskService()) { var t = ts.GetTask("\Microsoft\Windows\windows計划任務名稱")); if (null != t) { t.Enabled = true; t.Stop(); t.Run(); } } } } catch { } }
通過以上的結合使用,可以封裝成控制台應用程序發布到windows計划任務中,也可以封裝成windows服務。
本博客為軟件人生原創,歡迎轉載,轉載請標明出處:http://www.cnblogs.com/nbpowerboy/p/3375648.html 。演繹或用於商業目的,但是必須保留本文的署名軟件人生(包含鏈接)。如您有任何疑問或者授權方面的協商,請給我留言。 |