简体   繁体   中英

Error 1053:The service did not respond to start or control request in timely fashion with FileSystemWatcher

I have created a Windows Service which uses a FileSystemWatcher to look for changes in different directories. When I launch the service I am getting the error:

Error 1053:The service did not respond to start or control request in timely fashion.

I think that the error is coming from an infinite loop caused by using the using statement in the Watch() method as shown below:

    public FileSystemWatcher Watch()
    {

        FileSystemWatcher watcher;
        using (watcher = new FileSystemWatcher($"C:\\Users\\lashi\\AppData\\Roaming\\Sublime Text 3", _ext))
        {
           
            watcher.NotifyFilter = NotifyFilters.LastAccess
                                 | NotifyFilters.LastWrite
                                 | NotifyFilters.FileName
                                 | NotifyFilters.DirectoryName;

            watcher.IncludeSubdirectories = true;
            // Add event handlers.
            watcher.Changed += OnChanged;
            watcher.Created += OnChanged;
            watcher.Deleted += OnChanged;
            watcher.Renamed += OnRenamed;

            // Begin watching.
            watcher.EnableRaisingEvents = true;

        }
        return watcher;
    }

This is my OnStart() method:

    protected override void OnStart(string[] args)
    {
        String userName;
        String expt;
        if (args.Length < 2)
        {
            Console.WriteLine($"FileWatcher <user> <exptName>");
            Console.WriteLine($"Captures files into /temp/<exptName>-log and /temp/<exptName>-files");
            userName = "wost";
            expt = "expt1";
        }
        else
        {
            userName = args[0];
            expt = args[1];
        }
        String lexpt = $"C:\\Users\\lashi\\Desktop\\EMMC_CACHE\\{expt}-log";
        String fexpt = $"C:\\Users\\lashi\\Desktop\\EMMC_CACHE\\{expt}-file";

        if (!Directory.Exists(fexpt))
        {
            Directory.CreateDirectory(fexpt);
        }
        if (!Directory.Exists(lexpt))
        {
            Directory.CreateDirectory(lexpt);
        }
        // File Watcher Launch
        Watcher w = new Watcher(lexpt, fexpt, userName);
        FileSystemWatcher fw = w.Watch();
    }

Can you please help me to find a solution to this issue? I have tried a lot of suggestions but they don't seem to work. Thank you!

Click here ! to see how to increase Windows services pipe timeout by editing the registry keys

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM