在文件夹文件中通过代码保存,创建新文件时,我需要在后台执行一些耗时的工作。如果我在文件夹中收到新文件或文件时执行作业,我不应该考虑这一点,并且我需要在作业完成后执行。文件创建是执行作业的通告,因此不需要为每个文件创建执行作业,但我们应该确保作业完成到最后一次通知。
我正在尝试递归方法来做到这一点,但我仍然失败了。创建新文件时,正在执行CallReprocess()方法ID,我的Windows服务会自动停止。
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
{
}
}
}