如何在控制台调试服务

服务写好了,但不知道还行不行

写程序的,在写好代码之后,我们通常会调试~

服务程序在调试方面的确有点觉得无从着手~

要经过修改一些地方,就可以实现控制台调试输出,或者直接用VS调试~

将服务项目的输出类型,选择“控制台应用程序”

下面,我们改一下程序入口Program.cs的Main函数就可以了

用控制台运行的时候,在CMD下输入 /degub的参数就可以~


/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        static void Main(string [] args)
        
{
            
bool RunAsService = true;
            
if(args.Length > 0)
            
{
                RunAsService 
= false;
                
switch (args[0].ToLower())
                
{
                    
case "/debug":
                        CareEye.ThreadFunc();
                        
break;                    
                    
case "/?":
                    
case "/help":
                        Console.WriteLine(
"/debug 控制台运行  /? 或者 /help 显示帮助信息 ");
                        
break;
                    
default:
                        CareEye.ThreadFunc();
                        
break;
                }

            }


            
if (RunAsService)
            
{
                ServiceBase[] ServicesToRun;

                
// 同一进程中可以运行多个用户服务。若要将
                
// 另一个服务添加到此进程中,请更改下行以
                
// 创建另一个服务对象。例如,
                
//
                
//   ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
                
//
                ServicesToRun = new ServiceBase[] new CareEye() };

                ServiceBase.Run(ServicesToRun);
            }

        }


如果要用VS调试的话?

则需要把Main函数直接改成调用CareEye.ThreadFunc方法就可以了
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        static void Main(string [] args)
        
{
            
bool RunAsService = false;           
            
            
if (RunAsService)
            
{
                ServiceBase[] ServicesToRun;

                
// 同一进程中可以运行多个用户服务。若要将
                
// 另一个服务添加到此进程中,请更改下行以
                
// 创建另一个服务对象。例如,
                
//
                
//   ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
                
//
                ServicesToRun = new ServiceBase[] new CareEye() };

                ServiceBase.Run(ServicesToRun);
            }

            
else
            
{
                CareEye.ThreadFunc();
            }

        }
posted @ 2008-11-07 17:06  bino  阅读(447)  评论(1编辑  收藏  举报