兩次引發FileSystemWatcher更改事件我有一個應用程序,我在其中查找文本文件,如果對該文件進行了任何更改,則使用OnChanged更好地處理這件事。我正在使用NotifyFilters.LastWriteTime但這件事還是被炒了兩次。這是密碼。public void Initialize(){
FileSystemWatcher _fileWatcher = new FileSystemWatcher();
_fileWatcher.Path = "C:\\Folder";
_fileWatcher.NotifyFilter = NotifyFilters.LastWrite;
_fileWatcher.Filter = "Version.txt";
_fileWatcher.Changed += new FileSystemEventHandler(OnChanged);
_fileWatcher.EnableRaisingEvents = true;}private void OnChanged(object source, FileSystemEventArgs e){
.......}就我而言OnChanged被調用兩次,當我更改文本文件時。version.txt保存它。
3 回答
拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
OnChangedFileSystemWatcherFile.GetLastWriteTime
DateTime lastRead = DateTime.MinValue;void OnChanged(object source, FileSystemEventArgs a){
DateTime lastWriteTime = File.GetLastWriteTime(uri);
if (lastWriteTime != lastRead)
{
doStuff();
lastRead = lastWriteTime;
}
// else discard the (duplicated) OnChanged event}
慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
FileSystemWatcher
您可能會注意到,在某些情況下,單個創建事件生成由組件處理的多個創建事件。例如,如果使用FileSystemWatcher組件監視目錄中新文件的創建,然后使用記事本創建文件進行測試,則可能會看到兩個已創建的事件生成,即使只創建了一個文件。這是因為記事本在寫入過程中執行多個文件系統操作。記事本以批方式寫入磁盤,從而創建文件的內容,然后創建文件屬性。其他應用程序可以相同的方式執行。因為FileSystemWatcher監視操作系統活動,因此將捕獲這些應用程序觸發的所有事件。
CreatedNotifyFilter
哈士奇WWW
TA貢獻1799條經驗 獲得超6個贊
// fsw_ is the FileSystemWatcher instance used by my application.private void OnDirectoryChanged(...){
try
{
fsw_.EnableRaisingEvents = false;
/* do my stuff once asynchronously */
}
finally
{
fsw_.EnableRaisingEvents = true;
}}- 3 回答
- 0 關注
- 806 瀏覽
添加回答
舉報
0/150
提交
取消
