Windows Services: OnStart loop - do I need to delegate?

前端 未结 2 2008
失恋的感觉
失恋的感觉 2020-12-05 00:54

I\'ve got a windows service which scans a folder every n seconds for changes. I\'m getting \"the service did not respond to the start command in a timely fashion\" when tryi

相关标签:
2条回答
  • 2020-12-05 01:30

    The OnStart method shouldn't block. You need to spawn a worker thread that will do the job. You could also take a look at the FileSystemWatcher class to scan for file system change notifications.

    0 讨论(0)
  • 2020-12-05 01:32

    OnStart should only start the work; it isn't responsible for doing it. This typically means spawning a new thread to do the actual work. It is expected that OnStart completes promptly. For example:

        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
        }
    
    0 讨论(0)
提交回复
热议问题