Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <Query Kind="Program">
- <Namespace>System.Threading.Tasks</Namespace>
- </Query>
- async Task Main()
- {
- _lastLog = DateTime.Now;
- using (var defaultWatcher = new FileSystemWatcher())
- {
- defaultWatcher.Dump("default FileSystemWatcher");
- }
- var workingDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
- Directory.CreateDirectory(workingDir);
- using (var watcher = new FileSystemWatcher
- {
- EnableRaisingEvents = false,
- Filter = "*.*",
- IncludeSubdirectories = false,
- InternalBufferSize = 8192,
- NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.LastWrite,
- Path = workingDir, // default: "",
- Site = null,
- SynchronizingObject = null,
- })
- {
- watcher.Changed += (obj, evt) => Log(evt, "Changed");
- watcher.Created += (obj, evt) => Log(evt, "Created");
- watcher.Deleted += (obj, evt) => Log(evt, "Deleted");
- watcher.Error += (obj, evt) => Log(evt, "Error");
- watcher.Renamed += (obj, evt) => Log(evt, "Renamed");
- watcher.EnableRaisingEvents = true;
- Log(@"File.WriteAllText(""derp.txt"", ""derp"")");
- File.WriteAllText(Path.Combine(workingDir, "derp.txt"), "derp");
- await Task.Delay(TimeSpan.FromMilliseconds(10));
- Log(@"File.WriteAllText(""derp.txt"", ""derp"") // again");
- File.WriteAllText(Path.Combine(workingDir, "derp.txt"), "derp");
- await Task.Delay(TimeSpan.FromMilliseconds(10));
- Log(@"File.Open(""derp.txt"", FileMode.Open)");
- using (var f = File.Open(Path.Combine(workingDir, "derp.txt"), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
- using (var stream = new StreamWriter(f))
- {
- await Task.Delay(TimeSpan.FromMilliseconds(10));
- Log(@"stream.WriteLine(""some text"")");
- await stream.WriteLineAsync("some text");
- await Task.Delay(TimeSpan.FromMilliseconds(10));
- Log(@"stream.Dispose()");
- }
- await Task.Delay(TimeSpan.FromMilliseconds(10));
- Log(@"File.Move(""derp.txt"", ""herp.txt"")");
- File.Move(Path.Combine(workingDir, "derp.txt"), Path.Combine(workingDir, "herp.txt"));
- await Task.Delay(TimeSpan.FromMilliseconds(10));
- Log(@"File.Delete(""herp.txt"")");
- File.Delete(Path.Combine(workingDir, "herp.txt"));
- await Task.Delay(TimeSpan.FromMilliseconds(10));
- }
- Directory.Delete(workingDir);
- }
- static DateTime _lastLog;
- static object _lock = new object();
- static void Log(object message, string description=null)
- {
- lock (_lock)
- {
- var now = DateTime.Now;
- var timestamp = $"{now.ToString("HH:mm:ss.fff")} (+{Math.Round((now - _lastLog).TotalMilliseconds)}ms)";
- if (message is string)
- Console.WriteLine($"{timestamp}: {message}");
- else
- {
- Console.WriteLine(timestamp + (string.IsNullOrEmpty(description) ? string.Empty : ": " + description));
- LINQPad.Extensions.Dump(Util.ToExpando(message));
- }
- _lastLog = now;
- }
- }
Add Comment
Please, Sign In to add comment