我有一个Windows服务,每n秒扫描一个文件夹进行更改.当我试图启动它时,我得到"服务没有及时响应启动命令".
我在OnStart中有一个循环启动,如下所示:
public void OnStart(string[] args) { while (!_shouldExit) { //Do Stuff //Repeat Thread.Sleep(_scanIntervalMillis); } }
这是导致错误的原因吗?我应该委托这种方法吗?
OnStart应该只开始工作; 它不负责这样做.这通常意味着产生一个新线程来完成实际工作.预计OnStart会迅速完成.例如:
public void OnStart(string[] args) // should this be override? { var worker = new Thread(DoWork); worker.Name = "MyWorker"; worker.IsBackground = false; worker.Start(); } void DoWork() { // do long-running stuff }
OnStart方法不应该阻止.您需要生成一个可以完成工作的工作线程.您还可以查看FileSystemWatcher类以扫描文件系统更改通知.