| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System;
- using System.IO;
- using System.Threading.Tasks;
- using UnityEngine;
- namespace Packages.Rider.Editor
- {
- internal static class RiderFileSystemWatcher
- {
- public static void InitWatcher(string watchDirectory,
- string filter, FileSystemEventHandler onChanged)
- {
- Task.Run(() =>
- {
- var watcher = new FileSystemWatcher();
- watcher.Path = watchDirectory;
- watcher.NotifyFilter = NotifyFilters.LastWrite; //Watch for changes in LastWrite times
- watcher.Filter = filter;
- watcher.Changed += onChanged;
- watcher.Deleted += onChanged;
-
- watcher.EnableRaisingEvents = true;// Begin watching.
- return watcher;
- }).ContinueWith(task =>
- {
- try
- {
- var watcher = task.Result;
- AppDomain.CurrentDomain.DomainUnload += (EventHandler) ((_, __) =>
- {
- watcher.Dispose();
- });
- }
- catch (Exception ex)
- {
- Debug.LogError(ex);
- }
- }, TaskScheduler.FromCurrentSynchronizationContext());
- }
- }
- }
|