如何处理windows服务的时间更改

本文关键字:服务 时间 windows 何处理 处理 | 更新日期: 2023-09-27 18:22:33

我有一个应用程序,它有一个GUI,您可以在其中进行一些设置。其中一个设置是设置从各种来源运行数据收集的时间。执行实际工作的windows服务现在正在运行一个线程,该线程在设置的时间之前一直处于休眠状态。

问题

我的问题是,一旦我的服务处于休眠状态,并且有人决定更改数据收集的时间,通知服务更改时间的最佳方式是什么?

是否可以从我的GUI部分告诉windows重新启动我的特定服务?或者我可以给它发送一个线程中断吗?你会怎么做?

如何处理windows服务的时间更改

您的GUI当然可以控制服务,前提是运行该服务的帐户具有正确的权限。

您可以使用ServiceController类进行以下操作:

ServiceController sc = new ServiceController("Simple Service");
if (sc.Status == ServiceControllerStatus.Stopped)
{
    sc.Start();
    while (sc.Status == ServiceControllerStatus.Stopped)
    {
        Thread.Sleep(1000);
        sc.Refresh();
    }
}

假设设置存储在文件中,另一个选项是使用FileSystemWatcher类来监视对文件的更改,这将允许您查看值是否更改并在服务中重置它们。