C# 通知windows服务使用FileSystemWatcher执行一些耗时的任务
在一个文件夹中,文件是通过代码保存的,当创建新文件时,我需要在后台执行一些耗时的工作。当我在文件夹中接收到新的文件或文件时,我不应该考虑这一点,而且我需要在完成任务后执行。文件创建是执行作业的通知,因此不要求每次创建文件都执行作业,但我们应确保作业在最后一次通知之前完成 我正在尝试递归方法来实现这一点,但仍然失败。当创建新文件并执行CallReprocess()方法id时,我的windows服务将自动停止C# 通知windows服务使用FileSystemWatcher执行一些耗时的任务,c#,.net,multithreading,filesystemwatcher,C#,.net,Multithreading,Filesystemwatcher,在一个文件夹中,文件是通过代码保存的,当创建新文件时,我需要在后台执行一些耗时的工作。当我在文件夹中接收到新的文件或文件时,我不应该考虑这一点,而且我需要在完成任务后执行。文件创建是执行作业的通知,因此不要求每次创建文件都执行作业,但我们应确保作业在最后一次通知之前完成 我正在尝试递归方法来实现这一点,但仍然失败。当创建新文件并执行CallReprocess()方法id时,我的windows服务将自动停止 public partial class ReDoService : ServiceBas
public partial class ReDoService : ServiceBase
{
Boolean eventFired;
Boolean reprocessingInProgress;
String lastCreatedFileName;
public ReDoService()
{
InitializeComponent();
fileSystemWatcher1.Path = folderWatchPath;
eventFired = false;
reprocessingInProgress = false;
lastCreatedFileName = "";
}
private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e)
{
lastCreatedFileName = e.FullPath;
if (eventFired)
{
}
else
{
eventFired = true;
CallReprocess(lastCreatedFileName);
}
}
private void CallReprocess(String lastFileName)
{
if (!reprocessingInProgress)
{
if (lastFileName.ToUpper().Contains("EVENTFIRED"))
{
try
{
reprocessingInProgress = true;
eventFired = false;
//// Call the Perform Job method
reprocessingInProgress = false;
}
catch (Exception ex)
{
reprocessingInProgress = true;
eventFired = false;
}
}
else
{
}
CallReprocess(lastCreatedFileName);
}
else
{
}
}
}你认为“通知”是什么意思?在文件夹中创建一个文件就是通知,当创建一个文件时,我们应该执行一些任务,同时可以创建另一个文件,不要听那个文件,继续执行任务,任务完成后,假设你有10个新创建的文件,对最近的10个文件再次执行相同的任务,并继续执行。