2012-02-06 26 views
0

我有一个应用程序,它有一个GUI,您可以在其中进行一些设置。其中一个设置是设置从各种来源收集数据的时间。执行实际工作的Windows服务现在正在运行一个睡眠线程,直到已经设置的时间发生。如何处理Windows服务的时间变化

问题

我的问题是,一旦我的服务正在睡觉,有人决定更改时间时发生了数据收集,什么是通知的改变时服务的最好方法是什么?

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

回答

1

您的图形用户界面当然可以控制该服务,只要其运行的帐户具有正确的权限即可。

可以使用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类监视更改该文件 - 这将让你看到如果这些值发生变化并在服务中重置它们。

相关问题