0

我正在构建一个使用 FileSystemWatcher 并在后台运行的 Windows 服务。

我不想每次要调试时都继续卸载和安装服务,所以想在将其移入服务之前在普通程序中进行大部分开发。但我对此很陌生,当我运行它时,它只是穿过块并退出。

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

4

4 回答 4

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);
        }
    }
于 2012-05-21T16:13:50.100 回答
0
while (true)
{
  // Execute your program's functionality here.
}
于 2012-05-21T16:13:14.600 回答
0

不久前我写了一个由 7 部分组成的系列文章,标题为:构建 Windows 服务。它涵盖了构建服务的所有复杂性,使其易于调试和自行安装。

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

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

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

请参阅构建 Windows 服务 - 第 7 部分:最后润色以获取项目模板和安装说明的链接。

于 2012-05-21T16:54:30.597 回答
0

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

使用编译指示 #If DEBUG 进行调试,例如控制台输出。另一个是使用 Debug 对象。

如果您对此有任何疑问,请说出来。我也许能够找到我的笔记或自己制作一个 Windows 服务应用程序,只是为了看看 MSDN 上的步骤是否仍然有效。

于 2012-05-21T17:38:47.270 回答