Пример #1
0
            public void Dispose()
            {
                lock (_gate)
                {
                    if (_disposed)
                    {
                        return;
                    }

                    _disposed = true;
                }

                _fileChangeWatcher.EnqueueWork(
                    async service =>
                {
                    // Since we put all of our work in a queue, we know that if we had tried to advise file or directory changes,
                    // it must have happened before now
                    if (_directoryFilePath != null)
                    {
                        await service.UnadviseDirChangeAsync(_directoryWatchCookie).ConfigureAwait(false);
                    }

                    // it runs after disposed. so no lock is needed for _activeFileWatchingTokens
                    foreach (var token in _activeFileWatchingTokens)
                    {
                        await UnsubscribeFileChangeEventsAsync(service, token).ConfigureAwait(false);
                    }
                });
            }
Пример #2
0
            public Context(FileChangeWatcher fileChangeWatcher, string directoryFilePath)
            {
                _fileChangeWatcher     = fileChangeWatcher;
                _noOpFileWatchingToken = new FileWatchingToken();

                if (directoryFilePath != null)
                {
                    if (!directoryFilePath.EndsWith("\\"))
                    {
                        directoryFilePath = directoryFilePath + "\\";
                    }

                    _directoryFilePathOpt = directoryFilePath;

                    _fileChangeWatcher.EnqueueWork(
                        service => { ErrorHandler.ThrowOnFailure(service.AdviseDirChange(_directoryFilePathOpt, fWatchSubDir: 1, this, out _directoryWatchCookie)); });
                }
            }
Пример #3
0
            public Context(FileChangeWatcher fileChangeWatcher, string?directoryFilePath)
            {
                _fileChangeWatcher     = fileChangeWatcher;
                _noOpFileWatchingToken = new FileWatchingToken();

                if (directoryFilePath != null)
                {
                    if (!directoryFilePath.EndsWith("\\"))
                    {
                        directoryFilePath += "\\";
                    }

                    _directoryFilePath = directoryFilePath;

                    _fileChangeWatcher.EnqueueWork(
                        async service =>
                    {
                        _directoryWatchCookie = await service.AdviseDirChangeAsync(_directoryFilePath, watchSubdirectories: true, this).ConfigureAwait(false);
                    });
                }
            }