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

时间:2012-02-06 11:08:02

标签: c# windows-services

我有一个具有GUI的应用程序,您可以在其中进行一些设置。其中一个设置是设置从各种源收集数据的时间。执行实际工作的Windows服务现在正在运行一个休眠的线程,直到设置的时间发生。

问题

我的问题是,一旦我的服务正在休眠,有人决定改变数据收集的时间,那么通知服务更改时间的最佳方法是什么?

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

1 个答案:

答案 0 :(得分:1)

如果您运行的帐户具有正确的权限,您的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类来监视文件的更改 - 这将允许您查看值是否已更改并在服务中重置它们。