【问题标题】:What is the best way to keep a console application running in the background?保持控制台应用程序在后台运行的最佳方法是什么?
【发布时间】:2011-01-21 04:16:28
【问题描述】:

我正在开发一个控制台应用程序,我想从机器启动到关闭的那一刻在机器的后台运行它。现在我知道创建 Windows 服务是最佳选择,但在这种情况下,我需要能够与证书存储进行交互,我不相信本地服务帐户证书存储会这样做。

我正在查看 System.Timers 以保持应用程序运行,而不是用无限的 while 语句笨拙地死去,这是处理这个问题的合乎逻辑的方法,还是有更好的方法来保持应用程序打开?应用程序将频繁地检查 SQL 数据库以查看是否有任何工作要做。

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以在任何具有适当权限的用户下运行 Windows 服务。您不需要在本地服务帐户下运行它。

    【讨论】:

      【解决方案2】:

      您可以创建一个 Windows 服务并模拟用户访问必要的证书存储。看到这个问题:SO Question

      【讨论】:

        【解决方案3】:

        现在我知道创建 Windows 服务是最佳选择,但在这种情况下,我需要能够与证书存储区联系,我不相信本地服务帐户证书存储区会这样做。

        在 Windows XP 中:

        开始->设置->控制面板->管理工具->服务

        右键单击您的服务->属性->登录选项卡->此帐户->指定要运行的帐户

        Windows Vista 和 Windows 7 的情况类似,但我现在使用的是 XP 机器。

        我正在查看 System.Timers 以保持应用程序运行,而不是用无限的 while 语句陷入死局,这是处理此问题的合乎逻辑的方法还是有更好的方法来保持应用程序打开?

        System.Timers 适合定期做某事。同样,您可以在 Windows 服务中实现这一点。

        【讨论】:

          【解决方案4】:

          或者,您可以使用托盘图标来保持应用程序运行,请参阅here for a sample

          尽管您可以将应用程序作为 Windows 服务运行,但它需要额外的安装开销。另外=据我了解OP-当用户注销时应用程序应该关闭,这不适用于Windows服务。因此,当需要此行为时,您将明确关闭它。

          【讨论】:

          • 你打败了我——我会考虑一个托盘图标应用程序。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-16
          • 2020-02-05
          • 2018-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-17
          相关资源
          最近更新 更多