前言:
說幹就幹!
開發環境:
作業系統:windows 10 x64
開發環境:vs2017
程式語言:c#
.net版本:.net framework 4.5
目標平台:x86
windows service簡介:
乙個windows服務程式是在windows作業系統下能完成特定功能的可執行的應用程式。windows服務程式雖然是可執行的,但是它不像一般的可執行檔案通過雙擊就能開始執行了,它必須有特定的啟動方式。這些啟動方式包括了自動啟動和手動啟動兩種。對於自動啟動的windows服務程式,它們在windows啟動或是重啟之後使用者登入之前就開始執行了。只要你將相應的windows服務程式註冊到服務控制管理器(service control manager)中,並將其啟動類別設為自動啟動就行了。而對於手動啟動的windows服務程式,你可以通過命令列工具的net start命令來啟動它,或是通過控制面板中管理工具下的服務一項來啟動相應的windows服務程式。
同樣,乙個windows服務程式也不能像一般的應用程式那樣被終止。因為windows服務程式一般是沒有使用者介面的,所以你也要通過命令列工具或是下面圖中的工具來停止它,或是在系統關閉時使得windows服務程式自動停止。因為windows服務程式沒有使用者介面,所以基於使用者介面的api函式對其是沒有多大的意義。為了能使乙個windows服務程式能夠正常並有效的在系統環境下工作,程式設計師必須實現一系列的方法來完成其服務功能。windows服務程式的應用範圍很廣,典型的windows服務程式包含了硬體控制、應用程式監視、系統級應用、診斷、報告、web和檔案系統服務等功能。
使用c#開發windows服務的步驟:
1.建立windows service專案
從visual studio 2017 工程中選取 windows 服務(windows service)選項,給工程乙個新檔名,然後點選 確定
建立後的專案如下圖所示:
2.找到目錄結構中的onstart函式和onstop函式,onstart函式在啟動服務時執行,onstop函式在停止服務時執行
protected override void onstart(string args)protected override void onstop()
startload核心**如下:
createfilepath();//判斷資料夾是否存在,不存在則建立安裝服務步驟:1.開啟設計介面,右鍵選擇「新增安裝程式」,如圖所示://獲取前一天日期
string lastyear = datetime.now.adddays(-1).year.tostring();
string lastmonth = datetime.now.adddays(-1).month.tostring();
if (lastmonth.length < 2) lastmonth = "0" + lastmonth;
string lastday = datetime.now.adddays(-1).day.tostring();
if (lastday.length < 2) lastday = "0" + lastday;
//獲取當天日期
string year = datetime.now.year.tostring();
string month = datetime.now.month.tostring();
if (month.length < 2) month = "0" + month;
string day = datetime.now.day.tostring();
if (day.length < 2) day = "0" + day;
//設定所有檔名
int c = 0; //實際讀取的位元組數
while ((c = reader.read(buff, 0, buff.length)) > 0)
writer.close();
writer.dispose();
reader.close();
reader.dispose();
response.close();}}
}
介面上會出現serviceinstaller1和serviceprocessinstaller1
修改serviceinstaller1屬性,將starttype修改為automatic,servicename改為cloudimageload,同時可以新增description屬性,也就是你的windows服務的描述資訊(建議新增)
修改serviceprocessinstaller1屬性,將account屬性改為localsystem
2.進行服務的安裝 以「管理員身份」開啟vs2017命令提示符工具,記住一定要以管理員身份執行
隨後通過命令cd c:\windows\microsoft.net\framework64\v4.0.30319進入檔案目錄
通過命令installutil d:\軟體開發\cloudimageload\cloudimageload\bin\debug\cloudimageload.exe完成服務的安裝
「d:\軟體開發\cloudimageload\cloudimageload\bin\debug\cloudimageload.exe」及為你專案生成的路徑
檢視服務列表,此時就可以看到服務已經在服務列表中了
第一次安裝的服務應該是沒有執行的,需要手動啟動一下!
服務的解除安裝命令:installutil /u d:\軟體開發\cloudimageload\cloudimageload\bin\debug\cloudimageload.exe
1.service啟動屬性:
manual 服務安裝後,必須手動啟動。
automatic 每次計算機重新啟動時,服務都會自動啟動。
disabled 服務無法啟動。
2.新建的service專案,其中各屬性的含義(設計檢視->右鍵屬性):
autolog 是否自動寫入系統的日誌檔案
canhandlepowerevent 服務時候接受電源事件
canpauseandcontinue 服務是否接受暫停或繼續執行的請求
canshutdown 服務是否在執行它的計算機關閉時收到通知,以便能夠呼叫 onshutdown 過程
canstop 服務是否接受停止執行的請求
servicename 服務名
使用C 建立windows服務程式
建立windows服務專案 一 建立服務 1 檔案 新建 專案 windows桌面 windows服務,修改你要的專案名稱。我這不改名,仍叫windowsservice1,確定。2 其中的program.cs檔案是入口,service1.cs是服務檔案,所有的邏輯都在這。service1.cs包含兩...
C 建立Windows服務
using system using system.collections.generic using system.componentmodel using system.data using system.diagnostics using system.linq using system.se...
windows服務建立
以下是安裝命令 啟動服務命令 停止服務命令 解除安裝服務命令 安裝命令 c windowservice installutil.exe c windowservice organizclientsocketservice.exe 啟動服務命令 net start 搜才organiz客戶端資料同步服務...