最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C#實現(xiàn)Windows服務(wù)的方法詳解

 更新時間:2022年09月16日 08:15:31   作者:常哥說編程  
在實際應(yīng)用過程中,有時候我們希望開發(fā)的程序,不需要界面,直接開機(jī)就可以長時間運行,這時候,我們可以考慮做成一個Windows服務(wù)。這篇文章跟大家介紹一下,如何基于C#實現(xiàn)Windows服務(wù)的創(chuàng)建、安裝、啟動、停止和卸載,需要的可以參考一下

前言

在實際應(yīng)用過程中,有時候我們希望開發(fā)的程序,不需要界面,直接開機(jī)就可以長時間運行,這時候,我們可以考慮做成一個Windows服務(wù)。

這篇文章跟大家介紹一下,如何基于C#實現(xiàn)Windows服務(wù)的創(chuàng)建、安裝、啟動、停止和卸載。

Windows服務(wù)介紹

Microsoft Windows 服務(wù)能夠創(chuàng)建在它們自己的 Windows 會話中可長時間運行的可執(zhí)行應(yīng)用程序。這些服務(wù)可以在計算機(jī)啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。這使服務(wù)非常適合在服務(wù)器上使用,或任何時候,為了不影響在同一臺計算機(jī)上工作的其他用戶,需要長時間運行功能時使用。還可以在不同于登錄用戶的特定用戶賬戶或默認(rèn)計算機(jī)賬戶的安全上下文中運行服務(wù)。

創(chuàng)建Windows服務(wù)

1、創(chuàng)建一個新項目,項目類型選擇Windows服務(wù),如下圖所示:

2、項目名稱修改為thinger.WindowsServiceDemo,創(chuàng)建完成界面如下所示:

3、為了方便區(qū)分,將類名Service1改成MyService。

4、在設(shè)計界面,右擊鼠標(biāo),會出現(xiàn)如下彈窗,選擇添加安裝程序,并點擊添加安裝程序。

5、點擊添加安裝程序之后,會自動添加一個ProjectInstaller界面,里面有兩個組件,分別是serviceProcessInstaller和serviceInstaller。

6、先選擇serviceInstaller進(jìn)行屬性設(shè)置,主要可以設(shè)置以下屬性:

  • ServiceName:服務(wù)名稱,這個后續(xù)會使用到。
  • Description:描述,可以自己添加一下說明
  • StartType:啟動類型,可以設(shè)置為手動或自動

7、接著選擇ProjectInstaller進(jìn)行設(shè)置,主要設(shè)置Account,指示用來運行此服務(wù)的賬戶類型,可以設(shè)置為LocalSystem

8、設(shè)置完成之后,切換到MyService這個類,點擊切換到代碼視圖,我們可以看到后臺有一些自動生成的代碼:

    public partial class MyService : ServiceBase
    {
        public MyService()
        {
            InitializeComponent();
        }
 
        protected override void OnStart(string[] args)
        {
        }
 
        protected override void OnStop()
        {
        }
    }

從名稱可以看出,這里重寫了OnStart和OnStop接口,可以在這里寫一些啟動服務(wù)和停止服務(wù)的邏輯。

9、寫了一個簡單的邏輯,就是每次服務(wù)啟動或停止都會向指定的文件中寫入一串信息。

        protected override void OnStart(string[] args)
        {
            WriteInfo("服務(wù)啟動");
        }
 
        protected override void OnStop()
        {
            WriteInfo("服務(wù)停止");
        }
 
        private string filePath = @"D:\ServiceLog.txt";
 
        private void WriteInfo(string info)
        {
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.WriteLine($"{DateTime.Now},{info}");
                }
            }
        }

10、點擊項目,右擊生成。

11、這樣,一個簡單的Windows服務(wù)就創(chuàng)建完成了。

安裝卸載Windows服務(wù)

我們直接運行剛剛創(chuàng)建的服務(wù),發(fā)現(xiàn)是無法運行的,提示使用installutil.exe來運行。

如果安裝了VS,這個exe應(yīng)用程序在C盤里可以找到的,具體路徑為:C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe

接下來,我們使用這個exe來進(jìn)行安裝和卸載Windows服務(wù)。

1、首先,使用管理員權(quán)限打開CMD,然后進(jìn)入這個路徑下,便于直接操作InstallUtil。

2、安裝服務(wù)命令:installutil  exe絕對路徑 ;卸載服務(wù)命令:installutil  exe絕對路徑 -u ;查看安裝執(zhí)行結(jié)果:

打開服務(wù),可以看到TestService這個名稱的服務(wù)已經(jīng)安裝完成,

3、安裝完成后,雙擊打開,可以啟動服務(wù):

4、也可以手動停止服務(wù):

5、觀察D盤文件,是否存在信息:

6、卸載服務(wù)結(jié)果:

到此這篇關(guān)于基于C#實現(xiàn)Windows服務(wù)的方法詳解的文章就介紹到這了,更多相關(guān)C# Windows服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • C#中事件的定義和使用

    C#中事件的定義和使用

    在使用事件時,通常要定義兩個方法,一個是和事件定義的委托簽名一致的方法。下面讓我們看看使用事件的具體步驟。
    2016-06-06
  • 如何用WindowsForm給窗口添加一些簡單的動畫效果

    如何用WindowsForm給窗口添加一些簡單的動畫效果

    這篇文章主要介紹了如何用WindowsForm給窗口添加一些簡單的動畫效果,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#調(diào)用Win32的API函數(shù)--User32.dll

    C#調(diào)用Win32的API函數(shù)--User32.dll

    這篇文章主要介紹了C#調(diào)用Win32_的API函數(shù)--User32.dll,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • C#環(huán)形緩沖區(qū)(隊列)完全實現(xiàn)

    C#環(huán)形緩沖區(qū)(隊列)完全實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了C#環(huán)形緩沖區(qū)(隊列)完全實現(xiàn)代碼,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Unity3D實現(xiàn)飛機(jī)大戰(zhàn)游戲(1)

    Unity3D實現(xiàn)飛機(jī)大戰(zhàn)游戲(1)

    這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++中const的實現(xiàn)細(xì)節(jié)介紹(C,C#同理)

    C++中const的實現(xiàn)細(xì)節(jié)介紹(C,C#同理)

    本篇文章主要是對C++中const的實現(xiàn)細(xì)節(jié)進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#將Json解析成DateTable的方法

    C#將Json解析成DateTable的方法

    這篇文章主要介紹了C#將Json解析成DateTable的方法,涉及相關(guān)格式轉(zhuǎn)換的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • C#之WinForm跨線程訪問控件實例

    C#之WinForm跨線程訪問控件實例

    這篇文章主要介紹了C#之WinForm跨線程訪問控件,實例講述了跨線程訪問控件的簡單實現(xiàn)方法與用法,需要的朋友可以參考下
    2014-10-10
  • 淺析C# 基礎(chǔ)語法的使用

    淺析C# 基礎(chǔ)語法的使用

    本篇文章對C#中基礎(chǔ)語法的使用。進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • 最新評論

    湛江市| 九龙县| 满城县| 伊宁市| 正蓝旗| 桐柏县| 万山特区| 乐亭县| 和龙市| 成武县| 张家港市| 遂昌县| 疏勒县| 合水县| 射洪县| 介休市| 团风县| 柏乡县| 万载县| 克东县| 宾川县| 伊金霍洛旗| 云霄县| 南郑县| 瓦房店市| 洞口县| 介休市| 故城县| 集贤县| 安福县| 天门市| 东平县| 青田县| 金堂县| 灵川县| 武隆县| 保康县| 株洲县| 无为县| 内丘县| 鄂温|