【发布时间】:2014-05-04 18:04:57
【问题描述】:
我为控制台应用程序创建了文件系统观察程序。它运行完美。
除非您按“q”,否则它会继续列出用于添加文件的文件夹并在找到时显示文件的名称。
public void FileWatcher()
{
while (true)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\\WATCH-FOLDER";
watcher.IncludeSubdirectories = true;
watcher.NotifyFilter = NotifyFilters.Attributes |
NotifyFilters.CreationTime |
NotifyFilters.DirectoryName |
NotifyFilters.FileName |
NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.Security |
NotifyFilters.Size;
watcher.Filter = "*.*";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}
}
public void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine("{0}, with path {1} has been {2}", e.Name, e.FullPath, e.ChangeType);
}
public void OnRenamed(object source, RenamedEventArgs e)
{
Console.WriteLine(" {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
但是现在我如何在我的 Web 应用程序中使用它。我想要什么,当文件添加到它选择的文件夹中并在数据库中插入信息时。所以当我按下全部显示时,这些信息将成为表中现有数据的一部分。
但我不知道在哪里放置函数。有人说放在 Global.asax 文件中,也有人说放在主页面,或者添加线程。我完全糊涂了,不知道该怎么做。
【问题讨论】:
-
这通常不是一个好主意,因为您没有与客户端进行实时通信。
-
还有一件事。您应该记住,应用程序池仅在有客户端时运行。如果 20 分钟内没有人访问您的 Web 应用程序,则 IIS 将停止应用程序池,并且您的 FileWatcher 也将停止
-
您需要开发一个独立于 IIS 运行并监控文件夹的进程 - 就像您已经开发的那个一样。监视器在 Web 应用程序中没有位置,如上所述,它仅在客户端主动访问时运行。
-
我和@Aheho,问了很多问题,我们期待它方面的澄清!
-
@Admin,我们在给予 -ve 标记时是否有任何规则和规定。我在过去两周开始学习 ASP.NET,我想问这个重要的问题。这个问题显示了我在短短两周内所做的努力和研究。但是我还是得到了某人的负面评价,为什么,我真的无话可说。我们是否有任何标准,管理员可以给那些态度粗心的初学者给 -ve 标记的人给予 -ve 标记,并试图让他们因提出重要问题而士气低落。
标签: c# asp.net web filesystemwatcher