保持C#应用程序运行

时间:2012-05-21 16:09:40

标签: c# asp.net windows-services filesystemwatcher

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

我不希望每次要调试时都继续卸载和安装服务,因此在将其转换为服务之前,我希望在正常程序中完成大部分开发。但是我对此很陌生,当我运行它时,它只是通过块然后退出。

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

4 个答案:

答案 0 :(得分: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);
        }
    }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

前段时间我写了一篇名为Building a Windows Service的7部分剧集。它涵盖了所有复杂的建筑服务,使其易于调试和自行安装。

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

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

最终结果是一个Visual Studio项目模板,它可以在一个步骤中创建一个完整的上述所有工作服务。对我来说这是一个很好的节省时间。

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

答案 3 :(得分: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上的步骤是否仍然有用。