C 寫的windows服務程序守護實現

2022-02-21 13:59:08 字數 2090 閱讀 8741

最近在做乙個windows服務實現windows socket server讀取系統硬體,rfid的內容給web**使用。在測試過程中,發現rfid讀取過程有時會導致服務無端中止。因為涉及到硬體呼叫,查不到具體的原因。所以就簡單的處理,做乙個程序守護,當windows的服務程序退出之後,自動重新開啟。以前使用的方法是,另外做乙個程式監測。因為那種方法比較麻煩,現在介紹一種更簡單的方法。使用cmd使用。

@echo off

rem 定義迴圈間隔時間和監測的服務:

set secs=60

set srvname="服務名稱"

echo.

echo ****************************************

echo == 查詢計算機服務的狀態, ==

echo == 每間隔%secs%秒種進行一次查詢, ==

echo == 如發現其停止,則立即啟動。 ==

echo ****************************************

echo.

echo 此指令碼監測的服務是:%srvname%

echo.

if %srvname%. == . goto end

:chkit

set svrst=0

for /f "tokens=1* delims= " %%a in ('net start') do if /i "%%a %%b" == %srvname% set svrst=1

if %svrst% == 0 net start %srvname%

set svrst=

rem 下面的命令用於延時,否則可能會導致cpu單個核心滿載。

ping -n %secs% 127.0.0.1 > nul

goto chkit

:end

雙擊該批處理檔案,執行介面如下

****************************************

== 查詢計算機服務的狀態, ==

== 每間隔%secs%秒種進行一次查詢, ==

== 如發現其停止,則立即啟動。 ==

****************************************

此指令碼監測的服務是:%srvname%

如果%srvname%停止後,該批處理檢測到後會重啟該服務,介面如下

****************************************

== 查詢計算機服務的狀態, ==

== 每間隔%secs%秒種進行一次查詢, ==

== 如發現其停止,則立即啟動。 ==

****************************************

此指令碼監測的服務是:%srvname%

%srvname% 服務正在啟動

%srvname% 服務已經啟動成功。

按實際情況修改

set srvname="服務名稱"

這裡的服務名稱。

把檔案儲存到服務的安裝資料夾。

/// /// 啟動服務

///

///

protected override void onstart(string args)

system.timers.timer timer = new system.timers.timer();

/// /// 啟動定時器

///

private void starttimer()

///執行的

void timer_elapsed(object sender, system.timers.elapsedeventargs e)

else

//如果沒執行命令,執行cmd監聽。

if (!execdcmd)

}private bool execdcmd = false;

private void execcmd()

catch (exception ex)

,", ex.message, ex.stacktrace.tostring());

}}

c 寫windows服務程式

view plaincopy to clipboardprint?在很多應用中需要做windows服務來運算元據庫等操作,比如 1 一些非常慢的資料庫操作,不想一次性去做,想慢慢的通過服務定時去做,比如定時為資料庫備份等 2 在.net remoting中利用windows服務來做host 利用vs...

windows 下 寫守護程序

1.延時 延時40秒我就知道 ping n 40 127.0.0.1 nul 參考思路1 利用 time 變數,死迴圈來判斷。優點 準確 缺點 消耗cpu相當的高 思路2 利用 ping 127.0.0.1 n 2 死迴圈延遲,迴圈一次加1,自己計算需要的數值,優點 不會太消耗系統資源 缺點 準確度...

自寫Windows服務的安裝步驟

自寫windows服務的安裝步驟 程式概覽 最近有乙個將redis儲存的資料定期寫入資料庫的需求,經過查詢資料,決定寫乙個windows service,使用定時器定期對redis資料庫進行鍵值遍歷,並將每乙個hash值作為資料庫表的乙個記錄,存入資料庫表中。這樣可以不用每次使用某個模組都會去訪問資...