C# filesystemwatcher多个文件
我怀疑在C#中使用FileSystemWatcher。C# filesystemwatcher多个文件,c#,filesystemwatcher,C#,Filesystemwatcher,我怀疑在C#中使用FileSystemWatcher。 当在指定文件夹中创建文件时,需要通知我,但问题是如果我同时创建多个文件,并且触发了多个事件,并且我需要代码仅在处理前一个文件而不是同时处理多个文件时才继续 你知道怎么做吗 非常感谢 创建一个队列 在FileSystemWatcher中排队 在另一个线程中退出队列 请确保使用队列以线程安全的方式使用它。Synchronized我处理filesystemwatchers的方式是,每当触发事件时,我都会将该事件的详细信息添加到队列中。然后我设置
当在指定文件夹中创建文件时,需要通知我,但问题是如果我同时创建多个文件,并且触发了多个事件,并且我需要代码仅在处理前一个文件而不是同时处理多个文件时才继续 你知道怎么做吗 非常感谢
队列
FileSystemWatcher中排队
请确保使用队列以线程安全的方式使用它。Synchronized我处理filesystemwatchers的方式是,每当触发事件时,我都会将该事件的详细信息添加到队列中。然后我设置了一个5秒的计时器来处理队列。此计时器有望确保文件已完成复制,并且所有操作都已完成(即引发多个事件) 在处理队列时,您可以使用锁来确保在任何给定时间只有一个线程处理该队列,然后您可以从队列中取出内容并处理它,直到队列为空,然后完成 如果您希望能够在处理队列时将其添加到队列中,则可能需要执行一些适当的锁定。伪代码:
bool wasLastObjectProcessed = true
function onFileWatcherCreateFile
lock wasLastObjectProcessed
if wasLastObjectProcessed and processFile(file)
#do some code here that you need to do if it is processed
else
wasLastObjectProcessed = false
endif
endlock
endfunction
无法为此提供伪代码,但您可能必须让触发的方法在单独的线程中执行并使用线程锁。