程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#經由過程創立Windows辦事啟動法式的辦法詳解

C#經由過程創立Windows辦事啟動法式的辦法詳解

編輯:C#入門知識

C#經由過程創立Windows辦事啟動法式的辦法詳解。本站提示廣大學習愛好者:(C#經由過程創立Windows辦事啟動法式的辦法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C#經由過程創立Windows辦事啟動法式的辦法詳解正文


本文實例講述了C#經由過程創立Windows辦事啟動法式的辦法。分享給年夜家供年夜家參考,詳細以下:

1. 新建一個Windows辦事運用法式

創立項目——》Visual C# 左邊的"+"——》Windows ——》Windows 辦事(右邊模板)——》輸出稱號,肯定創立項目

2. 設置Windows辦事的屬性(Windows辦事裡沒有窗體,所以點擊左邊設計器裡空白的處所便可在右邊屬性欄裡看到屬性)

這裡屬性是掌握辦事器能否可以停滯,暫停,持續等等的操作。依據須要選擇。屬性的名字曾經很明確了,不須要再做太多說明。我是把 CanPauseAndContinue 和 CanShutDown 設置為 true。

ServiceName 屬性是這個辦事的今後再辦事治理器中顯示的稱號。

3. 設置Windows辦事的裝置法式

在設計窗口裡右鍵單擊鼠標,選擇“添加裝置法式”。如許便可以添加 ProjectInstaller.cs 和serviceInstaller1 和 serviceProcessInstaller1 這兩個對象都有一個比擬主要的屬性。

單擊 serviceInstaller1 在右邊的屬性窗口裡有 StartType 屬性,指定的是啟動辦事的方法和時光。假如想讓辦事開機啟動,並一向運轉,將這個屬性設置為 Automatic。

單擊 serviceProcessInstaller1 在右邊的屬性窗口裡有 Account 屬性,指定的是運轉此辦事的帳戶類型。假如想讓一切用戶都應用這個辦事,將這個屬性設置為 LocalService

今朝一切的創立及屬性設置任務就停止了。上面開端停止代碼編寫任務。

4. 須要用計時器來准時檢測法式能否運轉,是以我們要增長一個Timer控件。

翻開代碼窗口。

起首,增長 using System.Timers; 援用。

這裡有OnStart(string[] args)和OnStop()兩個函數。望文生義,OnStart 就是辦事啟動時運轉的代碼。OnStop就是辦事停止時運轉的代碼。

我們在OnStart裡創立Timer控件,並設置其屬性和增長事宜。

System.Timers.Timer t = new System.Timers.Timer(1000); //這裡的1000指的是Timer的時光距離為1000毫秒
t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Click); //Timer_Click是達到時光的時刻履行事宜的函數
t.AutoReset = true; //設置是履行一次(false)照樣一向履行(true)
t.Enabled = true; //能否履行System.Timers.Timer.Elapsed事宜

如許,當辦事運轉後,每1秒都將履行 Timer_Click 函數

5. 編寫 Timer_Click 函數

private void Timer_Click(Object sender, ElapsedEventArgs e)
{
  Process[] localByName = Process.GetProcessesByName("exe");
  if (!IsExistProcess("exe")) //假如獲得的過程數是0, 那末解釋法式未啟動,須要啟動法式
  {
    Process.Start("exe"); //啟動法式的途徑
  }
  else
  {
    //假如法式曾經啟動,則履行這一部門代碼
  }
}
private bool IsExistProcess(string processName)
{
  Process[] MyProcesses = Process.GetProcesses();
  foreach (Process MyProcess in MyProcesses)
  {
    if (MyProcess.ProcessName.CompareTo(processName) == 0)
    {
      return true;
    }
  }
  return false;
}

如今一切代碼的任務也完成了。

6. 生成Windows辦事的運用法式

單擊 生成 ——》生成 WindowsService1
這時候,在 D:\Soft\WindowsService1\bin\Debug 文件夾裡會生成 WindowsService1.exe 文件。
假如勝利便可履行下一步。

7. 裝置辦事

serviceInstaller1屬性中設置:

Description(體系辦事的描寫)
DisplayName (體系辦事中顯示的稱號)
ServiceName(體系事宜檢查器裡的運用法式事宜中起源稱號)

serviceProcessInstaller1屬性設置:Account 下拉設置成 LocalSystem

辦事與運用法式紛歧樣,不克不及夠經由過程在Visual Studio裡運轉,必需應用裝置軟件裝置到Windows 辦事裡去。完成下面三個截圖的操作後,持續上面注冊和卸載操作。

這個裝置軟件在 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 這個文件夾裡

法式稱號為 InstallUtil.exe
要運轉這個法式須要應用 command "敕令提醒符" 法式。

單擊開端——》運轉——》輸出"cmd”單擊肯定
輸出cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 回車 進入這個文件夾
輸出InstallUtil D:\Soft\WindowsService1\bin\Debug\WindowsService1.exe 即InstallUtil + 辦事.exe文件的地址 回車。這時候辦事就裝置終了了。
假如想卸載這個辦事也是用這個軟件。
輸出InstallUtil D:\Soft\WindowsService1\bin\Debug\WindowsService1.exe -u 即"InstallUtil + 辦事.exe文件的地址 - u" 回車。這時候辦事就卸載終了了。
固然我們如今不須要卸載這個辦事。如今只差最初一步完成我們的功效了。

8. 啟動辦事

辦事裝置勝利今後,並沒有啟動,我們須要在辦事治理器中啟動它,而且假如運轉的法式是帶窗體的法式,還須要修正一下辦事的屬性。

進入掌握面板——》治理對象——》辦事 翻開辦事治理器。或許運轉-------->cmd------->services.msc---當地辦事設置

在右邊的辦事列表中找到我們適才裝置的辦事,辦事稱號就是第2步中ServiceName屬性的內容。這裡就是WindowsService1。

假如運轉的法式是帶窗體的法式,那末右鍵單擊這個辦事選擇“屬性”——》單擊“登錄”標簽(在最下面)——》選擇當地體系帳戶——》在“許可辦事與桌面交互”復選框前打勾——》單擊肯定加入屬性。

這是,帶有窗體的法式才會正常運轉。不然只會在過程中看到該法式,然則沒有窗體。

如今可以單擊這個辦事,然後單擊啟動來啟動這個辦事了。

全體進程停止。

你也能夠為辦事創立裝置!

願望本文所述對年夜家C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved