国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#開發Windows服務的基礎代碼

2019-11-17 03:21:25
字體:
來源:轉載
供稿:網友

C#開發Windows服務的基礎代碼

做項目需要對Windows服務進行操作,從網上找了一些資料,總結如下:

(以下程序在程序中測試通過)

  1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Data;  5 using System.Drawing;  6 using System.Text;  7 using System.Windows.Forms;  8 using System.Collections;  9 using System.Configuration.Install; 10 using System.Collections.Specialized; 11 using System.ServicePRocess; 12  13 namespace IAU.ServerInstall.BLL 14 { 15     public class ServiceControl 16     { 17         /// <summary> 18         /// 注冊服務(注冊完就啟動,已經存在的服務直接啟動。) 19         /// </summary> 20         /// <param name="strServiceName">服務名稱</param> 21         /// <param name="strServiceInstallPath">服務安裝程序完整路徑(.exe程序完整路徑)</param> 22         public void Register(string strServiceName, string strServiceInstallPath) 23         { 24             IDictionary mySavedState = new Hashtable(); 25  26             try 27             { 28                 System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(strServiceName); 29  30                 //服務已經存在則卸載 31                 if (ServiceIsExisted(strServiceName)) 32                 { 33                     //StopService(strServiceName); 34                     UnInstallService(strServiceName, strServiceInstallPath); 35                 } 36                 service.Refresh(); 37                 //注冊服務 http://m.survivalescaperooms.com/sosoft/ 38                 AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller(); 39  40                 mySavedState.Clear(); 41                 myAssemblyInstaller.Path = strServiceInstallPath; 42                 myAssemblyInstaller.UseNewContext = true; 43                 myAssemblyInstaller.Install(mySavedState); 44                 myAssemblyInstaller.Commit(mySavedState); 45                 myAssemblyInstaller.Dispose(); 46  47                 service.Start(); 48             } 49             catch (Exception ex) 50             { 51                 throw new Exception("注冊服務時出錯:" + ex.Message); 52             } 53         } 54  55         /// <summary> 56         /// 卸載服務 57         /// </summary> 58         /// <param name="strServiceName">服務名稱</param> 59         /// <param name="strServiceInstallPath">服務安裝程序完整路徑(.exe程序完整路徑)</param> 60         public void UnInstallService(string strServiceName, string strServiceInstallPath) 61         { 62             try 63             { 64                 if (ServiceIsExisted(strServiceName)) 65                 { 66                     //UnInstall Service 67                     AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller(); 68                     myAssemblyInstaller.UseNewContext = true; 69                     myAssemblyInstaller.Path = strServiceInstallPath; 70                     myAssemblyInstaller.Uninstall(null); 71                     myAssemblyInstaller.Dispose(); 72                 } 73             } 74             catch (Exception ex) 75             { 76                 throw new Exception("卸載服務時出錯:" + ex.Message); 77             } 78         } 79  80  81         /// <summary> 82         /// 判斷服務是否存在 83         /// </summary> 84         /// <param name="serviceName">服務名</param> 85         /// <returns></returns> 86         public bool ServiceIsExisted(string serviceName) 87         { 88             ServiceController[] services = ServiceController.GetServices(); 89             foreach (ServiceController s in services) 90             { 91                 if (s.ServiceName == serviceName) 92                 { 93                     return true; 94                 } 95             } 96             return false; 97         } 98  99         /// <summary>100         /// 啟動服務(啟動存在的服務,30秒后啟動失敗報錯)101         /// </summary>102         /// <param name="serviceName">服務名</param>103         public void StartService(string serviceName)104         {105             if (ServiceIsExisted(serviceName))106             {107                 System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);108                 if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)109                 {110                     service.Start();111                     for (int i = 0; i < 30; i++)112                     {113                         service.Refresh();114                         System.Threading.Thread.Sleep(1000);115                         if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)116                         {117                             break;118                         }119                         if (i == 29)120                         {121                             throw new Exception("服務" + serviceName + "啟動失敗!");122                         }123                     }124                 }125             }126         }127 128         /// <summary>129         /// 停止服務(停止存在的服務,30秒后停止失敗報錯)130         /// </summary>131         /// <param name="serviceName"></param>132         public void StopService(string serviceName)133         {134             if (ServiceIsExisted(serviceName))135             {136                 System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);137                 if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)138                 {139                     service.Stop();140                     for (int i = 0; i < 30; i++)141                     {142                         service.Refresh();143                         System.Threading.Thread.Sleep(1000);144                         if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)145                         {146                             break;147                         }148                         if (i == 29)149                         {150                             throw new Exception("服務" + serviceName + "停止失敗!");151                         }152                     }153                 }154             }155         }156     }157 }

博客園 柔城 以上代碼概述:

C#對Windows服務操作(注冊安裝服務,卸載服務,啟動停止服務,判斷服務存在)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溧水县| 永德县| 屏东市| 哈尔滨市| 蛟河市| 轮台县| 公主岭市| 北票市| 秭归县| 睢宁县| 黑龙江省| 东兰县| 桓台县| 温宿县| 寻乌县| 翁牛特旗| 宁津县| 扎鲁特旗| 盐亭县| 保康县| 仁寿县| 潼南县| 唐河县| 鹤峰县| 南丰县| 桃源县| 三穗县| 新干县| 安阳县| 盈江县| 北川| 榆林市| 广水市| 岳阳市| 莱西市| 亳州市| 谢通门县| 随州市| 莲花县| 商丘市| 台东县|