English 中文(简体)
Windows服务:OnStart循环 -我需要委托吗?
原标题:
  • 时间:2009-03-16 10:52:57
  •  标签:

我有一个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类以扫描文件系统更改通知。





相关问题
热门标签