狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#使用延遲的FileSystemWatcher來避免重復(fù)觸發(fā)事件

admin
2023年12月26日 22:57 本文熱度 769

問題:

  程序里需要監(jiān)視某個(gè)目錄下的文件變化情況: 一旦目錄中出現(xiàn)新文件或者舊的文件被覆蓋,程序需要讀取文件內(nèi)容并進(jìn)行處理;但在實(shí)際處理中發(fā)現(xiàn)當(dāng)一個(gè)文件產(chǎn)生變化時(shí),Change事件被反復(fù)觸發(fā)了好幾次。這樣可能的結(jié)果是造成同一文件的重復(fù)處理。

解決方法:

  針對上面的問題,于是寫了一個(gè)可以延遲FileSystemWatcher發(fā)出的事件的Class DelayFileSystemWatcher。

 System;
 System.Collections.Generic;
 System.IO;
 System.Threading;
 Utility
{
      DelayFileSystemWatcher
    {
          Timer m_Timer;
          Int32 m_TimerInterval;
          FileSystemWatcher m_FileSystemWatcher;
          FileSystemEventHandler m_FileSystemEventHandler;
          Dictionary<String, FileSystemEventArgs> m_ChangedFiles =  Dictionary<, FileSystemEventArgs>();
         DelayFileSystemWatcher( path,  filter, FileSystemEventHandler watchHandler,  timerInterval)
        {
            m_Timer =  Timer(OnTimer, , Timeout.Infinite, Timeout.Infinite);
            m_FileSystemWatcher =  FileSystemWatcher(path, filter);
            m_FileSystemWatcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.CreationTime;
            m_FileSystemWatcher.Created += fileSystemWatcher_Changed;
            m_FileSystemWatcher.Changed += fileSystemWatcher_Changed;
            m_FileSystemWatcher.Deleted += fileSystemWatcher_Changed;
            m_FileSystemWatcher.Renamed += fileSystemWatcher_Changed;
            m_FileSystemWatcher.EnableRaisingEvents = ;
            m_FileSystemEventHandler = watchHandler;
            m_TimerInterval = timerInterval;
        }
          fileSystemWatcher_Changed( sender, FileSystemEventArgs e)
        {
             (m_ChangedFiles)
            {
                 (!m_ChangedFiles.ContainsKey(e.Name))
                {
                    m_ChangedFiles.Add(e.Name, e);
                }
            }
            m_Timer.Change(m_TimerInterval, Timeout.Infinite);
        }
          OnTimer( state)
        {
            Dictionary<String, FileSystemEventArgs> tempChangedFiles =  Dictionary<String, FileSystemEventArgs>();
             (m_ChangedFiles)
            {
                 (KeyValuePair<, FileSystemEventArgs> changedFile  m_ChangedFiles)
                {
                    tempChangedFiles.Add(changedFile.Key, changedFile.Value);
                }
                m_ChangedFiles.Clear();
            }
             (KeyValuePair<, FileSystemEventArgs> changedFile  tempChangedFiles)
            {
                m_FileSystemEventHandler(, changedFile.Value);
            }
        }
    }

使用方式如下:

        s_DelayFileSystemWatcher = new DelayFileSystemWatcher(@"C:\Temp", "*.xml", fileSystemWatcher_Changed, 1500);

        
private static void fileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
        {
            
switch (e.ChangeType)
            {
                
case WatcherChangeTypes.Created:
                    
//TODO
                    
break;
                
case WatcherChangeTypes.Deleted:
                    
//TODO                        
                    
break;
                
case WatcherChangeTypes.Changed:
                    
//TODO
                    
break;
                
default:
                    
break;
            }
        }

該文章在 2023/12/26 22:58:24 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved