有人可以帮助我了解如何构建一个 24/7 运行的软件来侦听特定文件夹(例如 C:\Actions),并且每次我在该文件夹中放置一个新文件时,该软件都需要读取和处理它。
如果文件夹中没有文件,软件不应只等待下一个文件的到来而什么也不做。
文件(action1.txt)内容示例(1+1)
软件正在处理(1+1),将答案(2)保存到另一个文件夹,并从“C:\Actions\”文件夹中删除文件(action1.txt)。
我知道如何读取文件并处理它..
我很难理解如何仅当文件夹中有新文件时才触发软件以及如何在不使用太多内存或导致内存泄漏的情况下24/7运行该软件......
到目前为止,我已经以无限循环的原始方式使用它,并且每 60 秒(睡眠)我检查文件夹中是否有新文件。这太没用了,也没有那么有效。
如果有人能帮助我了解如何使其更有效,我会很高兴。
非常感谢
Use the 文件系统观察者 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher%28v=vs.110%29.aspx
该页面的一个示例:
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\Actions";
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
// Begin watching.
watcher.EnableRaisingEvents = true;
和改变的事件:
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
不过,在使用此类时,您需要注意一些事项。它在网络驱动器/UNC 路径上效果不佳。另外,如果您将大量文件粘贴到该目录中,则会溢出buffer http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.internalbuffersize%28v=vs.110%29.aspx并且您可能无法获取添加到文件夹中的每个文件的事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)