私はC#でFileSystemWatcherを使用して疑いがあります。
ファイルが指定されたフォルダに作成されたときに通知する必要がありますが、同時に複数のファイルを作成して複数のイベントが発生し、前のファイルが処理された場合にのみコードが継続する必要があります複数のファイルを同時に処理しないでください。filesystemwatcher複数のファイル
どのように手がかりを取るか?
感謝
私はC#でFileSystemWatcherを使用して疑いがあります。
ファイルが指定されたフォルダに作成されたときに通知する必要がありますが、同時に複数のファイルを作成して複数のイベントが発生し、前のファイルが処理された場合にのみコードが継続する必要があります複数のファイルを同時に処理しないでください。filesystemwatcher複数のファイル
どのように手がかりを取るか?
感謝
擬似コード:
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
は、使用して、スレッドセーフな方法でそれを使用していることを確認し、別のスレッドでFileSystemWatcher
Queue<T>
Queue.Synchronized
ファイルシステムウォッチャーを扱う方法イベントが発生するたびにそのイベントの詳細をキューに追加するということです。次に、キューを処理するために5秒間タイマーを設定します。このタイマーは、ファイルのコピーが完了し、すべての操作が完了していることを確認します(つまり、複数のイベントが発生しています)。
キューを処理するときにロックを使用して、ある時点でキューが1つのスレッドのみで処理されていることを確認してから、キューを空にしてキューが空になるまで処理し、再実行されます。
処理中にキューに追加したい場合は、適切なロックを行う必要があります。
は、このための擬似コードを提供することはできませんが、おそらく別のスレッドで実行し、スレッドロックを使用してトリガのメソッドを持っている必要があるだろう。 – xbonez