Guest User

Untitled

a guest
Nov 28th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. <Query Kind="Program">
  2. <Namespace>System.Threading.Tasks</Namespace>
  3. </Query>
  4.  
  5. async Task Main()
  6. {
  7. _lastLog = DateTime.Now;
  8. using (var defaultWatcher = new FileSystemWatcher())
  9. {
  10. defaultWatcher.Dump("default FileSystemWatcher");
  11. }
  12.  
  13. var workingDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
  14. Directory.CreateDirectory(workingDir);
  15.  
  16. using (var watcher = new FileSystemWatcher
  17. {
  18. EnableRaisingEvents = false,
  19. Filter = "*.*",
  20. IncludeSubdirectories = false,
  21. InternalBufferSize = 8192,
  22. NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.LastWrite,
  23. Path = workingDir, // default: "",
  24. Site = null,
  25. SynchronizingObject = null,
  26. })
  27. {
  28. watcher.Changed += (obj, evt) => Log(evt, "Changed");
  29. watcher.Created += (obj, evt) => Log(evt, "Created");
  30. watcher.Deleted += (obj, evt) => Log(evt, "Deleted");
  31. watcher.Error += (obj, evt) => Log(evt, "Error");
  32. watcher.Renamed += (obj, evt) => Log(evt, "Renamed");
  33.  
  34. watcher.EnableRaisingEvents = true;
  35.  
  36. Log(@"File.WriteAllText(""derp.txt"", ""derp"")");
  37. File.WriteAllText(Path.Combine(workingDir, "derp.txt"), "derp");
  38. await Task.Delay(TimeSpan.FromMilliseconds(10));
  39.  
  40. Log(@"File.WriteAllText(""derp.txt"", ""derp"") // again");
  41. File.WriteAllText(Path.Combine(workingDir, "derp.txt"), "derp");
  42. await Task.Delay(TimeSpan.FromMilliseconds(10));
  43.  
  44. Log(@"File.Open(""derp.txt"", FileMode.Open)");
  45. using (var f = File.Open(Path.Combine(workingDir, "derp.txt"), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
  46. using (var stream = new StreamWriter(f))
  47. {
  48. await Task.Delay(TimeSpan.FromMilliseconds(10));
  49.  
  50.  
  51. Log(@"stream.WriteLine(""some text"")");
  52. await stream.WriteLineAsync("some text");
  53. await Task.Delay(TimeSpan.FromMilliseconds(10));
  54.  
  55. Log(@"stream.Dispose()");
  56. }
  57. await Task.Delay(TimeSpan.FromMilliseconds(10));
  58.  
  59. Log(@"File.Move(""derp.txt"", ""herp.txt"")");
  60. File.Move(Path.Combine(workingDir, "derp.txt"), Path.Combine(workingDir, "herp.txt"));
  61. await Task.Delay(TimeSpan.FromMilliseconds(10));
  62.  
  63. Log(@"File.Delete(""herp.txt"")");
  64. File.Delete(Path.Combine(workingDir, "herp.txt"));
  65. await Task.Delay(TimeSpan.FromMilliseconds(10));
  66. }
  67.  
  68. Directory.Delete(workingDir);
  69. }
  70.  
  71. static DateTime _lastLog;
  72. static object _lock = new object();
  73.  
  74. static void Log(object message, string description=null)
  75. {
  76. lock (_lock)
  77. {
  78. var now = DateTime.Now;
  79.  
  80. var timestamp = $"{now.ToString("HH:mm:ss.fff")} (+{Math.Round((now - _lastLog).TotalMilliseconds)}ms)";
  81. if (message is string)
  82. Console.WriteLine($"{timestamp}: {message}");
  83. else
  84. {
  85. Console.WriteLine(timestamp + (string.IsNullOrEmpty(description) ? string.Empty : ": " + description));
  86. LINQPad.Extensions.Dump(Util.ToExpando(message));
  87. }
  88. _lastLog = now;
  89. }
  90. }
Add Comment
Please, Sign In to add comment