【问题标题】:Is there a way to have a Windows Service delay a PC shutdown until an action has completed?有没有办法让 Windows 服务延迟 PC 关机,直到操作完成?
【发布时间】:2013-06-11 15:26:38
【问题描述】:

我为一家外部托管的小型企业开发了一个 PHP/MySQL 电子商务网站。

同一数据库的精确副本也托管在企业实体店的现场,可通过销售点应用程序(我也在 C#.NET 中开发)访问。

我现在必须开发一种保持两个数据库同步的方法。

我正在考虑编写一个 Windows 服务(在 C#.NET 中),它每 5 分钟比较两个数据库(当运行 Windows 服务的 PC 实际打开时),但是我有一个关于 Windows 服务的问题.

如果我在进行数据库同步时关闭正在运行 Windows 服务的 PC - 有没有办法让 PC 等到同步完成后再关闭?

【问题讨论】:

    标签: .net visual-studio windows-services


    【解决方案1】:

    不确定服务是否可以使用它,但ShutdownBlockReasonCreate 的目的是警告用户在关机时操作处于挂起状态。

    【讨论】:

      【解决方案2】:

      您可以使用 AbortSystemShutdown 或 shutdown /a,但它仅适用于计划关机。

      如果你想使用服务来做到这一点,你可以使用

      protected override void OnShutdown() 
      {
          base.RequestAdditionalTime(max_time_of_your_db_sync_in_ms);
          serviceCore.OnShutdown();
          Stop(); 
      }
      

      参考MSDN

      【讨论】:

        【解决方案3】:

        Msdn 说 RequestAdditionalTime 方法“重写了 OnContinue、OnPause、OnStart 或 OnStop”..

        您不能在 OnShutDown 上覆盖 RequestAdditionalTime 方法

        【讨论】:

          猜你喜欢
          • 2021-09-11
          • 1970-01-01
          • 2020-05-29
          • 1970-01-01
          • 1970-01-01
          • 2017-08-11
          • 1970-01-01
          • 1970-01-01
          • 2022-07-21
          相关资源
          最近更新 更多