zoukankan      html  css  js  c++  java
  • 添加windows服务

    Code
    一、安装服务:
    private void InstallService(IDictionary stateSaver, string filepath)
            {
                
    try
                {
                    System.ServiceProcess.ServiceController service 
    = new System.ServiceProcess.ServiceController("ServiceName");
                    
    if(!ServiceIsExisted("ServiceName"))
                    {
                        
    //Install Service
                        AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                        myAssemblyInstaller.UseNewContext 
    = true;
                        myAssemblyInstaller.Path 
    =filepath;
                        myAssemblyInstaller.Install(stateSaver);
                        myAssemblyInstaller.Commit(stateSaver);
                        myAssemblyInstaller.Dispose();
                        
    //--Start Service
                        service.Start();
                    }
                    
    else
                    {
                        
    if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
                        {
                            service.Start();
                        }
                    }
                }
                
    catch (Exception ex)
                {
                    
    throw new Exception("installServiceError\n" + ex.Message);
                }
            }

    二、卸载windows服务:
            
    private void UnInstallService(string filepath)
            {
                
    try
                {
                    
    if (ServiceIsExisted("ServiceName"))
                    {
                        
    //UnInstall Service
                        AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
                        myAssemblyInstaller.UseNewContext 
    = true;
                        myAssemblyInstaller.Path 
    = filepath;
                        myAssemblyInstaller.Uninstall(
    null);
                        myAssemblyInstaller.Dispose();
                    }
                }
                
    catch (Exception ex)
                {
                    
    throw new Exception("unInstallServiceError\n" + ex.Message);
                }
            }

    三、判断window服务是否存在:
            
    private bool ServiceIsExisted(string serviceName)
            {
                ServiceController[] services 
    = ServiceController.GetServices();
                
    foreach (ServiceController s in services)
                {
                    
    if (s.ServiceName == serviceName)
                    {
                        
    return true;
                    }
                }
                
    return false;
            }

    四、启动服务:
    private void StartService(string serviceName)
            {
                
    if (ServiceIsExisted(serviceName))
                {
                    System.ServiceProcess.ServiceController service 
    = new System.ServiceProcess.ServiceController(serviceName);
                    
    if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
                    {
                        service.Start();
                        
    for (int i = 0; i < 60; i++)
                        {
                            service.Refresh();
                            System.Threading.Thread.Sleep(
    1000);
                            
    if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                            {
                                
    break;
                            }
                            
    if (i == 59)
                            {
                                
    throw new Exception(startServiceError.Replace("$s$", serviceName));
                            }
                        }
                    }
                }
            }

    五、停止服务:
            
    private void StopService(string serviceName)
            {
                
    if (ServiceIsExisted(serviceName))
                {
                    System.ServiceProcess.ServiceController service 
    = new System.ServiceProcess.ServiceController(serviceName);
                    
    if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                    {
                        service.Stop();
                        
    for (int i = 0; i < 60; i++)
                        {
                            service.Refresh();
                            System.Threading.Thread.Sleep(
    1000);
                            
    if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                            {
                                
    break;
                            }
                            
    if (i == 59)
                            {
                                
    throw new Exception(stopServiceError.Replace("$s$", serviceName));
                            }
                        }
                    }
                }
            }
  • 相关阅读:
    让弹幕给 PPD 生个孩子
    circle_clock 简单canvas实现圆弧时钟
    JS练习实例--编写经典小游戏俄罗斯方块
    就这样,我把4000张美女和帅哥照片下载本地了
    移动端开发的兼容问题(自我总结篇)
    css两栏布局、圣杯布局、双飞翼布局
    浅析Node与Element
    那是我在夕阳下的code
    flex布局中父容器属性部分演示效果
    关于CDN那些事
  • 原文地址:https://www.cnblogs.com/shineqiujuan/p/1603552.html
Copyright © 2011-2022 走看看