Написать .NET Standard 2.0-compatible file watcher для hosted environment (т.е. path — relative относительно корня приложения), который принимает на вход path, filter и делегат вида Action<string Path, string FileName>.
Ключевые требования:
- Делегат должен вызываться каждый раз, когда файл, лежащий в path и соответствующий фильтру, создали, удалили, изменили, переименовали, а также удалили саму директорию из path или создали её заново (например, мы создали file watcher для path = "App_Data/Files", filter = "*.txt"; потом директорию App_Data/Files удалили целиком и создали заново — watcher должен вызвать делегат на эти события).
- Изменения в файлах должны отслеживаться не только во время жизни приложения, но и когда оно не работает. То есть если приложение остановили, потом поменяли какие-то файлы, подпадающие под фильтр, потом запустили приложение заново — после запуска вотчер должен вызвать делегат для всех изменённых за время остановки приложения файлов.
- Вотчер должен поддерживать параллельную работу из разных потоков над одними и теми же файлами.