コード例 #1
0
        public async Task <string> GetChangedFileAsync(CancellationToken cancellationToken)
        {
            foreach (var file in _fileSet)
            {
                _fileWatcher.WatchDirectory(Path.GetDirectoryName(file));
            }

            var tcs = new TaskCompletionSource <string>();

            cancellationToken.Register(() => tcs.TrySetResult(null));

            Action <string> callback = path =>
            {
                if (_fileSet.Contains(path))
                {
                    tcs.TrySetResult(path);
                }
            };

            _fileWatcher.OnFileChange += callback;
            var changedFile = await tcs.Task;

            _fileWatcher.OnFileChange -= callback;

            return(changedFile);
        }