• 调试windows服务最简单的方法之一


    先看一下这段启动代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;

    namespace WindowsService1
    {
    static class Program
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    static void Main()
    {
    Service1 s
    = new Service1();

    if (Environment.UserInteractive)
    {
    s.DebugStart();

    Console.ReadKey();

    s.DebugStop();
    }
    else
    {
    ServiceBase[] ServicesToRun;
    ServicesToRun
    = new ServiceBase[] { s };
    ServiceBase.Run(ServicesToRun);
    }
    }
    }
    }

    关键就在对Environment.UserInteractive的判断上,

    请看MSDN上面的解释:

    获取一个值,用以指示当前进程是否在用户交互模式中运行。

    UserInteractive 属性为运行时无用户界面的 Windows 进程或一个服务(如 IIS)报告 false 如果此属性为 false,请不要显示模式对话框或消息框,因为没有用来与用户进行交互的图形用户界面。

    http://msdn.microsoft.com/zh-cn/library/system.environment.userinteractive(v=VS.100).aspx

    然后看一下Service1.cs中的代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;

    namespace WindowsService1
    {
    public partial class Service1 : ServiceBase
    {
    public Service1()
    {
    InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
    this.ServiceStart();
    }

    protected override void OnStop()
    {
    this.ServiceStop();
    }

    internal void DebugStart()
    {
    this.ServiceStart();
    }

    internal void DebugStop()
    {
    this.ServiceStop();
    }

    private void ServiceStart()
    {
    // TODO:

    }

    private void ServiceStop()
    {
    // TODO:
    }



    }
    }

    最后:更改Project的输出类型

    右击该Project,点击Properties,在Application标签中,更改Output Type为Console Application。

    OK啦,按F5试试

  • 相关阅读:
    Linux
    Linux
    JavaScript
    JavaScript
    Linux
    不可不说的Java“锁”事
    RabbitMQ公共配置
    求一个数字的补码
    项目中Controller的全局异常处理类
    如何较方便给上百张数据库表添加表字段
  • 原文地址:https://www.cnblogs.com/builderman/p/2081045.html
Copyright © 2020-2023  润新知