日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 開發技巧創建強大的 Windows 服務程序

admin
2025年3月29日 20:56 本文熱度 176

前言

在實際工作中,我們常常需要開發運行在后臺、無需用戶交互的應用程序。例如,定時讀取西門子PLC的數據并保存到數據庫中。為了實現這一目標,我們可以選擇使用C#創建一個Windows服務。

在本篇文章中,將介紹如何基于C#創建一個Windows服務,并實現對西門子PLC的定時讀取和保存功能,希望這篇文章能為大家提供有價值的參考。

Windows 服務說明

Windows 服務是一種特殊類型的應用程序,能夠在系統啟動時自動運行,并且無需用戶登錄即可執行。

它非常適合用于需要在后臺持續運行的任務,尤其是在無人值守環境中。

適用場景

1、持續運行的任務

日志采集:定時收集系統或應用程序的日志數據。

網絡代理:作為中間層處理網絡請求和響應。

數據同步:定期同步不同系統之間的數據。

2、系統后臺維護

自動更新:定時檢查并安裝系統或應用程序的更新。

性能監控:實時監控系統的性能指標(如CPU、內存使用率等)。

備份任務:定時執行數據備份操作。

3、無人值守環境中的任務

定時任務調度:在特定時間點執行預定義的任務。

設備監控:監控硬件設備的狀態并進行相應處理(如讀取PLC數據)。

核心特性

1、通過服務控制管理器(SCM)管理

SCM 是 Windows 操作系統中用于管理服務的一個組件。通過 SCM,可以方便地安裝、啟動、停止、暫停和刪除服務。

2、與用戶登錄狀態無關

Windows 服務可以在沒有任何用戶登錄的情況下運行。這意味著即使沒有用戶活動,服務也可以在后臺持續工作。

3、支持系統啟動時自動運行

可以配置服務在系統啟動時自動運行,確保關鍵任務始終處于激活狀態。這對于需要高可用性的應用尤其重要。

4、靈活的權限設置

Windows 服務可以配置不同的權限級別,允許它們訪問特定的系統資源或執行特定的操作。例如,某些服務可能需要管理員權限才能正常運行。

5、事件日志記錄

Windows 服務可以將運行時的信息記錄到系統事件日志中,便于后續的故障排查和審計。

6、多實例支持

在某些情況下,可以運行多個相同的服務實例,每個實例處理不同的任務或數據集。

開發與部署

開發工具:通常使用 C# 或其他 .NET 語言通過 Visual Studio 進行開發。

安裝包:可以通過安裝腳本或工具(如 sc.exe 命令行工具或第三方工具如 NSSM)來創建和管理服務。

調試與測試:可以使用 Visual Studio 的調試功能或專用的調試工具來測試服務的行為。

Windows服務創建

1、創建一個新項目,項目模板選擇Windows服務(.Net Framework):

2、項目名稱為WindowsServiceDemo,項目創建完成后如下

3、修改服務名稱為SiemensPLCService:

4、在設計界面的空白處,右擊彈窗中,選擇添加安裝程序:

5、點擊添加安裝程序之后,會自動添加一個ProjectInstaller界面,里面有兩個組件,分別是serviceProcessInstaller和serviceInstaller。
?
6、選擇serviceInstaller,在右側的屬性進行設置,主要可以設置以下屬性:

  • ServiceName:服務名稱

  • Description:服務描述

  • StartType:啟動類型

7、接著選擇ProjectInstaller進行設置,主要設置Account,指示用來運行此服務的賬戶類型,可以設置為LocalSystem。

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

我們可以在OnStart和OnStop里寫一些代碼邏輯。

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

private Plc siemens;
private CancellationTokenSource cts;
protected override void OnStart(string[] args)
{
    try
    {
        this.siemens = new Plc(CpuType.S7200Smart, "192.168.2.150"00);
        this.siemens.Open();

        cts = new CancellationTokenSource();
        Task.Run(async () =>
        {
            while (!cts.IsCancellationRequested)
            {
                try
                {
                    uint temp = Convert.ToUInt32(this.siemens.Read("DB1.DBD4"));
                    float val = temp.ConvertToFloat();
                    await Task.Delay(1000);
                    WriteInfo("讀取PLC數據:"+val.ToString("f2"));
                }
                catch (Exception ex)
                {
                    WriteInfo(ex.Message);
                }
            }
            this.siemens.Close();
        });

    }
    catch (Exception ex)
    {
        WriteInfo(ex.Message);
    }
}
privatestring 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}");
        }
    }
}
protected override void OnStop()
{
    this.siemens?.Close();
}

Windows服務安裝卸載

我們直接運行剛剛創建的服務,發現是無法運行的,提示如下:

接下來,我們使用這個exe來進行安裝和卸載Windows服務。

1、首先,使用管理員權限打開cmd命令行,然后進入這個路徑下,便于直接操作InstallUtil。cdC:\Windows\Microsoft.NET\Framework\v4.0.30319

2、安裝服務命令:installutil  exe絕對路徑 ;

installutil C:\Users\Administrator\Desktop\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.exe

打開服務,可以看到TestService這個名稱的服務已經安裝完成,

3、安裝完成后,雙擊打開,可以啟動服務,也可以手動停止:

4、觀察D盤文件,可以看到PLC的數據每秒會存一次到指定文件中:
?
5、需要卸載服務時,可以執行卸載服務命令:installutil  exe絕對路徑 -u ;

installutil C:\Users\Administrator\Desktop\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.exe -u

總結

在這篇文章中,探討了 Windows 服務的核心特性,包括如何通過服務控制管理器(SCM)進行管理、如何配置服務在系統啟動時自動運行,以及如何利用這些特性來實現各種后臺任務。我們還討論了開發和部署服務的基本步驟,希望能為你提供一個清晰的指導。


閱讀原文:原文鏈接


該文章在 2025/3/31 11:29:54 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 欧洲动漫精品专区一区二区三区 | 亚洲成在人线在线播放 | 在线综合亚洲欧美日韩手机版 | 亚洲欧美日韩国产精品专区网 | 视频一区二区三区 | 午夜天堂 | 国产亚洲免费在线观看 | 欧美1区2区3区 | 成a人片在线观看中文 | 国产欧美日韩va另类在线播放 | 亚洲国产一区二区中文字幕 | 亚洲v中文在线播放免费 | 国产一区二区在线观看免费 | 国产精品一区二区精品视频导航 | 国产精品白丝a∨网站 | 欧美日韩一本到手机视频观看一区 | 亚洲国产中日韩精品综合 | 老熟女重囗味 | 51精品国产人成在线观看 | 国产99热99 | a∨中文字幕另类 | 亚洲国产日韩在线人成电影 | 4k超清国 | 99热国产在线手 | 美美哒日本中文 | 五月婷婷中文字幕 | 综合色区在线观看 | 国产综合色产在线视频欧美 | 国产精品人 | 欧美日韩成人一区二区三区 | 亚洲国产综合一区日韩精品 | 飘雪影院手机免 | 中文字幕有码在线观看 | 日本黄页网址在线看免费不卡 | 日韩精品极 | 97精品国产一区二区三区 | 亚洲国产精品午夜伦不卡 | 欧美大片va欧美在线播放 | 亚洲一区二区三区在线观看网站 | 国产欧美一区二区三区不 | 揄拍成人国产精品视频 |