我正在尝试监视我的 asp.net mvc5 项目中的文件夹。我想把它放在 Startup.cs 中,在那里我初始化我的 FileSystemWatcher。public static void initializeWatcher() { string importPath = @"\\server\Exchange\Inbox", importFilterType = "*.xml"; try { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = importPath; watcher.Filter = ".xml"; watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName; watcher.Created += new FileSystemEventHandler(loadFile); watcher.Changed += new FileSystemEventHandler(loadFile); watcher.EnableRaisingEvents = true; } catch (Exception e) { } } private static void loadFile(object source, FileSystemEventArgs e) { xmlDocument.LoadXml(e.FullPath); }}现在,观察者被创建,但 'loadFile' 方法没有被触发,无论我在文件夹中做什么。我按照微软的例子:https ://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher( v= vs.110) .aspx让我知道我做错了什么。
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
您似乎在方法中创建了FileSystemWatcher作为局部变量。这当然会在方法结束时超出范围,并且很可能在那时得到整理,然后移除手表。
尝试在 Startup.cs 中将 FSW 创建为私有对象
public class Startup
{
private FileSystemWatcher watcher {get;set;}
public Startup(IApplicationEnvironment env,
IHostingEnvironment hostenv, ILoggerFactory logger)
{
//your setup FSW
{
}
接下来,尝试仅使用NotifyFilters.LastWrite.
- 1 回答
- 0 关注
- 279 浏览
添加回答
举报
0/150
提交
取消