我怀疑在C#中使用FileSystemWatcher 我需要在指定文件夹中创建文件时收到通知,但问题是如果我在多个事件被触发的同时创建多个文件,并且我需要代码仅在前一个文件被处理而不是处理时才继续多个文件同时出现。
有任何线索如何做到这一点?
非常感谢
答案 0 :(得分:1)
伪码:
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
答案 1 :(得分:0)
Queue<T>
FileSystemWatcher
确保使用Queue.Synchronized
答案 2 :(得分:0)
我处理文件系统监视器的方式是,每当事件触发时,我都会将该事件的详细信息添加到队列中。然后我设置一个计时器,持续5秒钟到队列进程。此计时器有望确保文件已完成复制并且所有操作都已完成(即多个事件被引发)。
处理队列时,您可以使用锁来确保队列在任何给定时间仅由一个线程处理,然后您可以从队列中取出并处理它直到队列为空,然后您就是完成。
如果您希望能够在处理过程中添加到队列,则可能需要进行适当的锁定。