当前位置:  开发笔记 > 编程语言 > 正文

Windows服务:OnStart循环 - 我需要委托吗?

如何解决《Windows服务:OnStart循环-我需要委托吗?》经验,为你挑选了2个好方法。

我有一个Windows服务,每n秒扫描一个文件夹进行更改.当我试图启动它时,我得到"服务没有及时响应启动命令".

我在OnStart中有一个循环启动,如下所示:

 public void OnStart(string[] args)
 {
    while (!_shouldExit)
    {
        //Do Stuff

        //Repeat
        Thread.Sleep(_scanIntervalMillis);
    }
 }

这是导致错误的原因吗?我应该委托这种方法吗?



1> Marc Gravell..:

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
    }



2> Darin Dimitr..:

OnStart方法不应该阻止.您需要生成一个可以完成工作的工作线程.您还可以查看FileSystemWatcher类以扫描文件系统更改通知.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有