Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通知windows服务使用FileSystemWatcher执行一些耗时的任务_C#_.net_Multithreading_Filesystemwatcher - Fatal编程技术网

C# 通知windows服务使用FileSystemWatcher执行一些耗时的任务

C# 通知windows服务使用FileSystemWatcher执行一些耗时的任务,c#,.net,multithreading,filesystemwatcher,C#,.net,Multithreading,Filesystemwatcher,在一个文件夹中,文件是通过代码保存的,当创建新文件时,我需要在后台执行一些耗时的工作。当我在文件夹中接收到新的文件或文件时,我不应该考虑这一点,而且我需要在完成任务后执行。文件创建是执行作业的通知,因此不要求每次创建文件都执行作业,但我们应确保作业在最后一次通知之前完成 我正在尝试递归方法来实现这一点,但仍然失败。当创建新文件并执行CallReprocess()方法id时,我的windows服务将自动停止 public partial class ReDoService : ServiceBas

在一个文件夹中,文件是通过代码保存的,当创建新文件时,我需要在后台执行一些耗时的工作。当我在文件夹中接收到新的文件或文件时,我不应该考虑这一点,而且我需要在完成任务后执行。文件创建是执行作业的通知,因此不要求每次创建文件都执行作业,但我们应确保作业在最后一次通知之前完成

我正在尝试递归方法来实现这一点,但仍然失败。当创建新文件并执行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
        {              
        }          
    }

}

你认为“通知”是什么意思?在文件夹中创建一个文件就是通知,当创建一个文件时,我们应该执行一些任务,同时可以创建另一个文件,不要听那个文件,继续执行任务,任务完成后,假设你有10个新创建的文件,对最近的10个文件再次执行相同的任务,并继续执行。