亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

兩次引發FileSystemWatcher更改事件

兩次引發FileSystemWatcher更改事件

C#
LEATH 2019-07-06 15:14:09
兩次引發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個贊

任何復制OnChanged事件FileSystemWatcher可以通過檢查File.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}


查看完整回答
反對 回復 2019-07-06
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

恐怕這是一個眾所周知的bug/特性FileSystemWatcher班級,等級。這是來自這個類的文檔:

您可能會注意到,在某些情況下,單個創建事件生成由組件處理的多個創建事件。例如,如果使用FileSystemWatcher組件監視目錄中新文件的創建,然后使用記事本創建文件進行測試,則可能會看到兩個已創建的事件生成,即使只創建了一個文件。這是因為記事本在寫入過程中執行多個文件系統操作。記事本以批方式寫入磁盤,從而創建文件的內容,然后創建文件屬性。其他應用程序可以相同的方式執行。因為FileSystemWatcher監視操作系統活動,因此將捕獲這些應用程序觸發的所有事件。

現在這段文字是關于Created事件,但同樣的情況也適用于其他文件事件。在某些應用程序中,您可以通過使用NotifyFilter屬性,但我的經驗是,有時您還必須進行一些手工復制過濾(Hack)。

一段時間前,我在一頁上標了幾頁FileSystemWatcher提示..你可能想去看看。


查看完整回答
反對 回復 2019-07-06
?
哈士奇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;
   }}


查看完整回答
反對 回復 2019-07-06
  • 3 回答
  • 0 關注
  • 806 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號