C# 如何在Windows服务中实现文件处理?
如何为多个目录创建监视Windows服务(C#),以扫描新文件并(如果有)编辑、重命名、移动到其他地方?我创建了一个C# 如何在Windows服务中实现文件处理?,c#,windows-services,directory,C#,Windows Services,Directory,如何为多个目录创建监视Windows服务(C#),以扫描新文件并(如果有)编辑、重命名、移动到其他地方?我创建了一个WorkerTask(),但它只适用于我启动服务时目录中的文件,而不适用于我稍后放在目录中的文件。它必须全天候运行 private void WorkerTask() { while (running) { // only 1 input dir in this case string[] filePaths = Directory.GetFiles(inp
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()
,但我认为尝试为多个输入文件夹实现它可能不是一个好主意。使用该类,这就是它的用途
它有几个您可以订阅的事件—当创建、更新和删除文件时。使用该类,这就是它的用途
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.
}
当创建、更新和删除文件时,您可以订阅几个事件。为什么您认为对多个输入文件夹使用
FileSystemWatcher
不是一个好主意?为什么您认为对多个输入文件夹使用FileSystemWatcher
不是一个好主意?我可以用它来扫描,比方说,50-100个不同的文件夹?如果我在一些快速的服务器上运行它,它会工作吗?@yosh-我认为您需要50-100个实例(除非您正在查看子文件夹)。由于这是事件驱动的,我不知道速度与此有什么关系。我可以用它来扫描,比方说,50-100个不同的文件夹?如果我在一些快速的服务器上运行它,它会工作吗?@yosh-我认为您需要50-100个实例(除非您正在查看子文件夹)。由于这是事件驱动的,我不知道速度与此有什么关系。
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.
}