• 关于Windows Service的一个编写技巧


    写过Windows Service的朋友都知道服务是不可以直接在vs里面启动调试,我们必须修改Program.cs文件来达到我们调试的目的,等服务调试好了以后还要把代码改回来,显非常的不方便,在这里为大家介绍一种通用写法,这样就可以实现在vs里直接以控制台的方式调试服务程序并且在安装服务时候也不用修改代码可以直接安装。

    下面看一个简单的Demo,相信看完这个大家都知道怎么写,本人觉得这种写法虽然很简单但挺巧妙的,所以写出来和大家分享一下!

    一.服务类代码

        public partial class Service1 : ServiceBase
        {
            public Service1()
            {
                InitializeComponent();
            }
    
            protected override void OnStart(string[] args)
            {
                Start();
            }
    
            protected override void OnStop()
            {
                Stop();
            }
    
            //自定义两个方法
            public void Start()
            {
                //启动服务...
            }
    
            public void Stop()
            {
                //关闭服务..
            }
        }

    二.Program.cs代码

        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            static void Main(string[] args)
            {
    
                var consoleMode = args.Any(arg => !string.IsNullOrEmpty(arg) && arg.ToLower() == "/console");
    
                if (consoleMode)
                {
                    Console.WriteLine("以控制台方式启动服务");
    
                    Service1 service1 = new Service1();
                    service1.Start();
    
                    Console.ReadLine();
                    service1.Stop();
                    return;
                }
           
           //
    以Windows Service方式启动服务
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
                { 
                    new Service1() 
                };
                ServiceBase.Run(ServicesToRun);
            }
        }

    补充:1.修改应用程序输出类型改为控制台应用程序

             2.给debug添加参数

  • 相关阅读:
    C#中正则表达式的使用
    Asp.Net MVC 身份验证-Forms
    ASP.NET MVC:窗体身份验证及角色权限管理示例
    asp.net mvc forms身份认证
    ASP.NET MVC Form验证
    C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
    参考例子,学习Func<T, TResult>委托
    Razor 中的@helper 与 @function 用法
    @Helper辅助方法和@functions自定义函数
    ASP.NET MVC传递参数(model), 如何保持TempData的持久性
  • 原文地址:https://www.cnblogs.com/bravo2012/p/3177047.html
Copyright © 2020-2023  润新知