zoukankan      html  css  js  c++  java
  • C#编写Windows 服务

    C#编写Windows 服务

    Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

         使用Microsoft Visual Studio2012可以很方便的创建一个Windows服务,本例实现一个向D盘的txt文件里,写入系统时间的Windows服务。

         新建一个Windows Services工程:

     

    工程创建好之后,默认会有一个Services1.cs文件,删掉此文件,重新添加一个新Item

    右击新添加的这个文件,选择View code,可以看到,有两个函数 OnStart和OnStop,OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。

    这两个函数的代码如下:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Diagnostics;
     6 using System.Linq;
     7 using System.ServiceProcess;
     8 using System.Text;
     9 using System.Threading.Tasks;
    10 using System.IO;
    11 
    12 namespace MyFirstWindowsService
    13 {
    14     partial class MyWindowsService : ServiceBase
    15     {
    16         public MyWindowsService()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         protected override void OnStart(string[] args)
    22         {
    23             // TODO: Add code here to start your service.
    24             FileStream fileStream = new FileStream(@"D:MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
    25 
    26             StreamWriter streamWriter = new StreamWriter(fileStream);
    27 
    28             streamWriter.BaseStream.Seek(0, SeekOrigin.End);
    29 
    30             streamWriter.WriteLine("My service started" + DateTime.Now.ToString() + "
    ");
    31 
    32             streamWriter.Flush();
    33 
    34             streamWriter.Close();
    35 
    36             fileStream.Close();
    37         }
    38 
    39         protected override void OnStop()
    40         {
    41             // TODO: Add code here to perform any tear-down necessary to stop your service.
    42             FileStream fileStream = new FileStream(@"D:MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
    43 
    44             StreamWriter streamWriter = new StreamWriter(fileStream);
    45 
    46             streamWriter.BaseStream.Seek(0, SeekOrigin.End);
    47 
    48             streamWriter.WriteLine("My service stopped " + DateTime.Now.ToString() + "
    ");
    49 
    50             streamWriter.Flush();
    51 
    52             streamWriter.Close();
    53 
    54             fileStream.Close();
    55         }
    56     }
    57 }
    复制代码

    之后需要新建一个安装组件MyWindowsServiceProjectInstaller(右击MyWindowsService.cs这个文件选择view desiner,然后选择Add Installer),需要将MyFirstWindowsServiceProcessInstaller的account属性设置为localservice.

    编写批处理文件:

     安装服务批处理:

    1 %SystemRoot%Microsoft.NETFrameworkv4.0.30319installutil.exe C:Usersgaoja1DesktopMyWindowsServiceMyFirstWindowsServiceinDebugMyFirstWindowsService.exe
    2 Net Start ServiceTest
    3 sc config ServiceTest start= auto

    卸载服务批处理:

    %SystemRoot%Microsoft.NETFrameworkv4.0.30319installutil.exe /u C:Usersgaoja1DesktopMyWindowsServiceMyFirstWindowsServiceinDebugMyFirstWindowsService.exe

    服务安装好之后:

    服务启动之后可以在D盘看到一个txt的文件,里面记录了服务的启动时间.

     
     
    分类: C#学习
    标签: C#学习
  • 相关阅读:
    C#字符串的比较
    C#字符串分割
    [Android] Android 卡片式控件CardView的优雅使用
    [Android] Android Studio 使用config.gradle统一管理项目的依赖库
    [Android] Android Studio 修改Gradle使用国内源
    [Android] Sqlite 数据库操作 工具封装类
    [Android] Android 去掉界面标题栏的方法
    [Android] Android RecycleView和ListView 自定义Adapter封装类
    [Android] Android 让UI控件固定于底部的几种方法
    [Android] Android读取Asset下文件的最简单的方法总结(用于MediaPlayer中)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3157731.html
Copyright © 2011-2022 走看看