FileSystemWatcher in an AspNetCore 2.1 BackgroundService\IHostedService
我正在尝试在 AspNet Core 2.1 应用程序中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class FSWImpl : BackgroundService { private readonly IHostingEnvironment _env; private readonly ILogger<LiftAndShift> _logger; private FileSystemWatcher _fsw; public LiftAndShift(IHostingEnvironment env, ILogger<FSWImpl> logger) { _env = env; _logger = logger; } protected override Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogInformation("Creating new FSW"); var path = Path.Combine(_env.ContentRootPath,"WebData"); _fsw = new FileSystemWatcher(path,"*.json"); _fsw.Created += _fsw_Created; _fsw.Changed += _fsw_Changed; _fsw.Renamed += _fsw_Renamed; _fsw.Error += _fsw_Error; return Task.CompletedTask; } private void _fsw_Error(object sender, ErrorEventArgs e) => _logger.LogInformation("File error"); private void _fsw_Renamed(object sender, RenamedEventArgs e) => _logger.LogInformation("File Renamed"); private void _fsw_Changed(object sender, FileSystemEventArgs e) => _logger.LogInformation("File changed"); private void _fsw_Created(object sender, FileSystemEventArgs e) => _logger.LogInformation("File created"); } |
我在启动时将此服务注册为
要启用
演示代码:
1 2 3 4 5 6 7 8 9 10 11 12 | protected override Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogInformation("Creating new FSW"); var path = Path.Combine(_env.ContentRootPath,"WebData"); _fsw = new FileSystemWatcher(path,"*.json"); _fsw.Created += _fsw_Created; _fsw.Changed += _fsw_Changed; _fsw.Renamed += _fsw_Renamed; _fsw.Error += _fsw_Error; _fsw.EnableRaisingEvents = true; return Task.CompletedTask; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // // Summary: // Gets or sets a value indicating whether the component is enabled. // // Returns: // true if the component is enabled; otherwise, false. The default is false. If // you are using the component on a designer in Visual Studio 2005, the default // is true. // // Exceptions: // T:System.ObjectDisposedException: // The System.IO.FileSystemWatcher object has been disposed. // // T:System.PlatformNotSupportedException: // The current operating system is not Microsoft Windows NT or later. // // T:System.IO.FileNotFoundException: // The directory specified in System.IO.FileSystemWatcher.Path could not be found. // // T:System.ArgumentException: // System.IO.FileSystemWatcher.Path has not been set or is invalid. public bool EnableRaisingEvents { get; set; } |