1

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

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

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

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

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

4

3 回答 3

2

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

于 2013-06-11T15:49:19.380 回答
2

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

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

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

参考MSDN

于 2013-06-11T21:30:00.893 回答
0

Msdn 说 RequestAdditionalTime 方法“覆盖了 OnContinue、OnPause、OnStart 或 OnStop”。

您不能在 OnShutDown 上覆盖 RequestAdditionalTime 方法

于 2013-09-25T11:38:01.843 回答