日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

【C#】C#创建Windows Service服务

發布時間:2025/5/22 C# 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C#】C#创建Windows Service服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄結構:

contents structure [+]
  • 創建Windows服務
  • 配置
  • 安裝Windows服務
  • 在Visual Studio中調試
  • 常見問題
  • 最近寫了一個TCP連接的程序,由于這種通信協議不同于HTTP協議,因此還不能部署到網站上面,于是就用到了Window服務。接下面筆者介紹一下在Visual Studio中如何安裝、調試Windows服務。筆者的Visual studio版本為2012,window版本為win7。

    1.創建Windows服務

    這時候點擊“啟動”按鈕,會提示我們啟動失敗。

    這因為Windows服務不能像普通窗口程序那樣啟動,接下來就安裝服務。

    2.配置

    在Service1.cs上右鍵,選擇“查看設計器”,

    然后再在上面的空白處,右鍵選擇“添加安裝程序”,

    這時候,Visual Studio就會自動為我們生成一個ProjectInstaller.cs文件,接下來,右鍵ProjectInstaller.cs,選擇“查看設計器”,就可以看到如下的界面,

    可以看到兩個控件,點擊右擊第一個控件,打開屬性設計器,將其中的Account設置為LocalSystem(本地服務),

    接下來,右擊上面的第二個控件,打開屬性界面,設置ServiceName,和將其中的StratType設置為Automatic,

    ?

    接下來,為了測試需要,筆者寫一些測試代碼:

    public partial class Service1 : ServiceBase{private readonly Timer _MyTimer;public Service1(){InitializeComponent();_MyTimer = new Timer(10*1000); //10秒鐘啟動一次_MyTimer.Elapsed += _MyTimerElapsed;}protected override void OnStart(string[] args){_MyTimer.Start();}protected override void OnStop(){_MyTimer.Stop();}internal void _MyTimerElapsed(object sender, ElapsedEventArgs e){try{//添加往C盤新建一個文本文件的程序try{string logFileName = @"C:\\log.txt"; // 文件路徑 FileInfo fileinfo = new FileInfo(logFileName);using (FileStream fs = fileinfo.OpenWrite()){StreamWriter sw = new StreamWriter(fs);sw.WriteLine("=====================================");sw.Write("添加日期為:" + DateTime.Now.ToString() + "\r\n");sw.WriteLine("=====================================");sw.Flush();sw.Close();}}catch (Exception ex){// ex.ToString(); }}catch (Exception ex){ }}}

    上面的代碼,筆者寫到Service1.cs類中,該類是Visual Sudio在啟動的時候,自動為我們創建好的類文件。觀察這個類文件,可以發現,該類繼承了ServiceBase,ServiceBase是服務類的基類,也就是說想要創建服務,必需繼承這個類,ServiceBase中有兩個方法比較常用,分別為OnStart()和OnStop(),顧名思義,OnStart方法在服務啟動的時候調用,OnStop方法在服務停止的時候調用。

    ?

    在測試代碼寫好后,我們就可以點擊 生成》生成解決方案,如果后需修改了,那么需要點擊重新生成解決方案:

    在解決方案生成好后,接下來就是安裝Windows服務了。

    3.安裝Windows服務

    找到上面項目中 bin\debug 目錄下生成的exe文件,這里筆者的位置為 ?D:\Dev\Test\day20171218\MyWindowsService\MyWindowsService\bin\Debug\MyWindowsService.exe?

    在這個文件夾中,我們看見生成了許多文件,這些文件是這個服務的一些配置和數據庫信息,.config就是以前的App.config內容,.如果筆者不想在這個Debug文件夾里安裝服務,那么最好把整個Debug文件夾復制過去。然后再打開cmd,進入到.net對應版本的目錄中,這里筆者的版本為4.0,可以通過查看 C:\Windows\Microsoft.NET\Framework ,目錄下的版本信息,一般情況下,最高版本為當前版本。

    在CMD中進入到對應的版本中,

    ?

    然后通過Installer.exe進行安裝,安裝的時候,需要指定生成了服務exe文件的位置,比如:

    InstallUtil.exe D:\Dev\Test\day20171218\MyWindowsService\MyWindowsService\bin\Debug\MyWindowsService.exe

    如果想要卸載,只需要在InstallUtil.exe后面加上/u就可以了,比如:

    InstallUtil.exe /u D:\Dev\Test\day20171218\MyWindowsService\MyWindowsService\bin\Debug\MyWindowsService.exe

    服務安裝好后,就可以啟動服務了。

    按下“Win+R”打開運行界面框,然后輸入services.msc,進入到服務界面,找到自己對應的服務,啟動。

    在上面的OnStart方法中,我們在C盤下面打印了日志,接下來,打開上面的C盤下面的log.txt,

    可以看到日志已經成功打印了。

    到這里為止,一個Window Server的服務程序,就完成了,接下來,筆者介紹如何在Visual Studio中調試Windows服務程序。

    4.在Visual Studio中調試

    Windows服務的調試和普通程序也不一樣,

    首先在代碼設置斷點,在上面的_MyTimerElapsed方法中添加Debugger.Launch()方法即可。

    這里可以重新生成一下解決方案,然后選擇? 調試》附加到進程

    如果沒有,刷新一下就出來了。

    接下來,重啟一下服務,就可以正常調試了。

    5.常見問題

    如果安裝windows服務的時候,出現報錯securiy Exception,那么應該以管理員的身份啟動窗口。

    如果安裝Windows服務的時候,出現System.ComponentModel.Win32Exception,那么是因為在Visual Studio中設置serviceProcessInstaller1時候,沒有把Account設置為LcoalSystem.

    ?

    轉載于:https://www.cnblogs.com/HDK2016/p/8056977.html

    總結

    以上是生活随笔為你收集整理的【C#】C#创建Windows Service服务的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。