写过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添加参数