如何为多个目录创建一个监控窗口服务(C#),以便扫描新文件并(如果有)编辑、重命名、将它们移动到其他位置?我已经创建了一个WorkerTask(),但它只适用于我启动服务时目录中的文件,而不适用于我稍后放在那里的文件。它必须全天候运行。
private void WorkerTask() {
while (running) {
// only 1 input dir in this case
string[] filePaths = Directory.GetFiles(input_dir, "*.jpg");
if (filePaths.Lenght > 0)
{
foreach (String file_path in filePaths)
{
// some other operations before moving
File.Move(file_path, output_file_path);
}
}
}
}我怎样才能不断地扫描新的(只是完整的!)要上载到此文件夹的文件?它必须在两次扫描之间有2-3秒的最大延迟,这样一旦文件到达文件夹,它就会被处理和移动。我见过FileSystemWatcher(),但我认为尝试在多个输入文件夹中实现它可能不是一个好主意。
发布于 2011-05-04 22:37:04
public void Start()
{
FileSystemWatcher fsw = new FileSystemWatcher();
fsw.Path = "\\server\share"; //or use your inputdir
fsw.NotifyFilter = NotifyFilters.Size; //(several others available)
fsw.Filter = "*.jpg";
fsw.Changed += new FileSystemEventHandler(OnChanged);
fsw.EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e)
{
//do stuff.
}发布于 2011-05-04 22:29:48
使用FileSystemWatcher类,这就是它的用途。
它有几个你可以订阅的事件--当文件被创建、更新和删除时。
https://stackoverflow.com/questions/5884999
复制相似问题