將.NET 控制台應用程式作為Windows 服務運行,無需單獨的專案
在Windows 中,服務是在後台運行的長時間運行的進程。雖然傳統的 .NET 控制台應用程式在控制台視窗中以互動方式運行,但最好將它們作為服務運行以實現連續操作。
要在不建立單獨的服務項目的情況下實現此集成,請考慮以下解決方案:
using System.ServiceProcess; public static class Program { #region Nested classes to support running as service public const string ServiceName = "MyService"; public class Service : ServiceBase { public Service() { ServiceName = Program.ServiceName; } protected override void OnStart(string[] args) { Program.Start(args); } protected override void OnStop() { Program.Stop(); } } #endregion static void Main(string[] args) { if (!Environment.UserInteractive) // running as service using (var service = new Service()) ServiceBase.Run(service); else { // running as console app Start(args); Console.WriteLine("Press any key to stop..."); Console.ReadKey(true); Stop(); } } private static void Start(string[] args) { // onstart code here } private static void Stop() { // onstop code here } }
此解決方案利用ServiceBase 類別在控制台應用程式中建立嵌套服務類。實作 OnStart 和 OnStop 方法來處理服務生命週期事件。
Environment.UserInteractive 對於控制台應用程式預設為 true,對於服務預設為 false。透過檢查此標誌,應用程式可以確定其運行時環境並執行適當的邏輯。
或者,您可以合併命令列開關來明確控制服務或控制台行為。例如,您可以使用“--console”之類的開關以互動方式執行應用程式。
這種方法可以靈活地運行與控制台應用程式和 Windows 服務相同的二進位文件,從而簡化了程式碼維護和部署。
以上是如何在沒有單獨專案的情況下將 .NET 控制台應用程式作為 Windows 服務運行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!