zoukankan      html  css  js  c++  java
  • 服务程序在c#中的写法

     1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A。

    2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看到你的服务名

    3.按F7进入代码窗口,里面有2个重载函数是你要在其中写代码:覆写OnStart和OnStop方法。   

     4.回到设计窗口点右键选择添加安装程序生成serviceInstaller1 serviceProcessInstaller1两个组件,把serviceInstaller1的属性ServiceName改写为你的服务名,并把启动模式设置为AUTOMATIC,把serviceProcessInstaller1的属性account改写为LocalSystem

    5.编译链接生成服务程序。

    6.用.net framework工具INSTALLUTIL安装服务程序即可,在“Wsv_A.exe”文件所在目录下,vs 2005命令行中输入“InstallUtil.exe Wsv_A.exe”,然后在“服务”中启动该服务,或者在“运行”中输入“NET START Service1”

    7.卸载服务时,首先在“服务”中停止服务,或者在命令行输入“NET STOP Service1”停止服务,然后输入在VS 2005命令行“InstallUtil.exe -u Wsv_A.exe”,卸载该服务。
     
     
     
     
     
    补充另外一个转载过来的:
     
    1. 新建一个项目
    2. 从一个可用的项目模板列表当中选择Windows服务
    3. 设计器会以设计模式打开
    4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer) 
    5. 设置Timer属性,Enabled属性为False,Interval属性30000毫秒

    6. 切换到代码视图页(按F7或在视图菜单当中选择代码),然后为这个服务填加功能

    Windows服务的构成

      在你类后面所包含的代码里,你会注意到你所创建的Windows服务扩充了System.ServiceProcess.Service类。所有以.NET方式建立的Windows服务必须扩充这个类。它会要求你的服务重载下面的方法,Visual Studio默认时包括了这些方法。

    • Dispose – 清除任何受控和不受控资源(managed and unmanaged resources)
    • OnStart – 控制服务启动
    • OnStop – 控制服务停止

    安装Windows服务

      Windows服务不同于普通Windows应用程序。不可能简简单单地通过运行一个EXE就启动Windows服务了。安装一个Windows服务应该通过使用.NET Framework提供的InstallUtil.exe来完成,或者通过诸如一个Microsoft Installer (MSI)这样的文件部署项目完成。


    添加服务安装程序

      创建一个Windows服务,仅用InstallUtil程序去安装这个服务是不够的。你必须还要把一个服务安装程序添加到你的Windows服务当中,这样便于InstallUtil或是任何别的安装程序知道应用你服务的是怎样的配置设置。

    1. 将这个服务程序切换到设计视图
    2. 右击设计视图选择“添加安装程序”
    3. 切换到刚被添加的ProjectInstaller的设计视图
    4. 设置serviceInstaller1组件的属性: 
    1) ServiceName = My Sample Service
    2) StartType = Automatic
    5. 设置serviceProcessInstaller1组件的属性 
    1) Account = LocalSystem
    6. 生成解决方案

    用InstallUtil安装Windows服务

      现在这个服务已经生成,你需要把它安装好才能使用。下面操作会指导你安装你的新服务。

    1. 打开Visual Studio .NET命令提示
    2. 改变路径到你项目所在的binDebug文件夹位置(如果你以Release模式编译则在binRelease文件夹)
    3. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。
    注意:直接运行 InstallUtil.exe 可能会失败,提示:
    'InstallUtil.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    您可以在 C:WINNTMicrosoft.NETFrameworkv1.1.4322 找到这个可执行程序
    4. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
    5. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
    6. 右击你的服务选择启动就可以启动你的服务了

      在每次需要修改Windows服务时,这就会要求你卸载和重新安装这个服务。不过要注意在卸载这个服务前,最好确保服务管理控制台已经关闭,这会是一个很好的习惯。如果没有这样操作的话,你可能在卸载和重安装Windows服务时会遇到麻烦。仅卸载服务的话,可以执行相的InstallUtil命令用于注销服务,不过要在后面加一个/u命令开关。


    调试Windows服务

      从另外的角度度看,调试Windows服务绝不同于一个普通的应用程序。调试Windows服务要求的步骤更多。服务不能象你对普通应用程序做的那样,只要简单地在开发环境下执行就可以调试了。服务必须首先被安装和启动,这一点在前面部分我们已经做到了。为了便于跟踪调试代码,一旦服务被启动,你就要用Visual Studio把运行的进程附加进来(attach)。记住,对你的Windows服务做的任何修改都要对这个服务进行卸载和重安装。


    附加正在运行的Windows服务

      为了调试程序,有些附加Windows服务的操作说明。这些操作假定你已经安装了这个Windows服务并且它正在运行。

    1. 用Visual Studio装载这个项目 
    2. 点击“调试”菜单
    3. 点击“进程”菜单
    4. 确保 显示系统进程 被选
    5. 在 可用进程 列表中,把进程定位于你的可执行文件名称上点击选中它
    6. 点击 附加 按钮
    7. 点击 确定
    8. 点击 关闭
    9. 在timer1_Elapsed方法里设置一个断点,然后等它执行

     

    让windows service 运行中出现错误时不停止的方法

     

    private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {     timer1.Enabled = false;
        
    try     {      

       // 在这里对数据库进行操作   

          timer1.Interval = 1 * 1000;   

      }    

     catch (SqlException sqlException)

        {         timer1.Interval = 5 * 60 * 1000;     }

        finally  

       {         timer1.Enabled = true;     } }

  • 相关阅读:
    UVALive 7141 BombX
    CodeForces 722D Generating Sets
    CodeForces 722C Destroying Array
    CodeForces 721D Maxim and Array
    CodeForces 721C Journey
    CodeForces 415D Mashmokh and ACM
    CodeForces 718C Sasha and Array
    CodeForces 635C XOR Equation
    CodeForces 631D Messenger
    田忌赛马问题
  • 原文地址:https://www.cnblogs.com/poison/p/3546291.html
Copyright © 2011-2022 走看看