2012-05-21 96 views
0

我正在构建使用FileSystemWatcher的Windows服务,并在后台运行。保持C#应用程序运行

我不想在每次我想调试时都继续卸载和安装服务,所以想在正常的程序中进行大部分的开发,然后再将其移植到服务中。但我对此很陌生,当我运行它时,它只是贯穿整个区块并退出。

什么是保持程序运行的好方法?

+0

为了保持无限期运行,程序通常需要某种类型的循环。 –

+0

'while(true){...}',也许? –

+2

看看这个问题:http://stackoverflow.com/questions/2517550/wrapping-a-c-sharp-service-in-a-console-app-to-debug-it –

回答

6

http://einaregilsson.com/run-windows-service-as-a-console-program/

我用这个之前,根据是否调试我的服务作为控制台应用程序及其在交互式用户环境中运行。

public partial class DemoService : ServiceBase 
{ 
    static void Main(string[] args) 
    { 
     DemoService service = new DemoService(); 

     if (Environment.UserInteractive) 
     { 
      service.OnStart(args); 
      Console.WriteLine("Press any key to stop program"); 
      Console.Read(); 
      service.OnStop(); 
     } 
     else 
     { 
      ServiceBase.Run(service); 
     } 
    } 
+0

我更喜欢'Console.ReadKey(true)'来避免输入字符的点。 – Servy

+0

这是我做的,但另外也在控制台中重复日志记录输出到控制台,使其更容易看到。 – Richard

0
while (true) 
{ 
    // Execute your program's functionality here. 
} 
0

我之前写了一个7部分系列文章,标题为:Building a Windows Service。它涵盖了所有建筑服务的复杂性,使其易于调试和自行安装。

的基本功能集我一直在寻找如下:

  • 建立旨在也可以从控制台使用的服务
  • 服务的启动/关闭的
  • 正确的事件记录和其他活动
  • 通过使用命令行参数允许多个实例
  • 服务和事件日志的自行安装
  • 服务异常和错误的正确事件记录
  • 控制的开机,关机和重新启动选项
  • 处理自定义服务命令,电源和会话事件
  • 定制服务的安全性和访问控制

最终的结果是一个Visual Studio项目模板通过一步完成上述所有操作,创建一项工作服务。这对我来说是一个很好的节省时间。

请参阅Building a Windows Service – Part 7: Finishing touches以获取项目模板的链接并安装说明。

0

以下是来自MSDN @http://msdn.microsoft.com/en-us/library/7a50syb3(v=vs.80).aspx?ppud=4的文档。我已经尝试过,它在.NET Framework 3.x下工作。目前我找不到关于它的描述性说明。

使用编译指示#如果DEBUG用于调试目的(如控制台输出)。另一个是使用Debug对象。

如果您对此有任何疑问,请这么说。我可能能够找到我的笔记或自己制作Windows Service应用程序,只是为了查看MSDN上的步骤是否仍然有效。

相关问题