簡體   English   中英

如何為FileSystemWatcher手動RaiseEvent

[英]How Can I RaiseEvent Manually For A FileSystemWatcher

我已經擴展了FileSystemWatcher類,以合並FolderCount監視器和FolderEmpty監視器,如果文件夾達到指定數量的文件或文件夾返回空狀態,它們將引發事件。 我似乎正在工作,並且在發生這些情況時引發事件。

但是,我的問題是,當FileSystemWatcher首次初始化時,它會自動檢查指定文件夾的文件夾內容以獲取文件計數。 如果已經達到限制,則需要立即引發一個事件,而不是等待FileSystemWatcher報告該事件。

目前,我似乎只能通過插入.Created.Deleted調用來引發事件,但是,因為沒有文件被創建或刪除,所以我不知道如何手動引發事件。

Public Sub Initialize()
        SetFolderCountStatus() 'Set the isFolderEmpty flag based on file contents
        If Not isFolderEmpty Then
            If options.WatchForFolderCount Then 
                If FileCountReached(options.FileCountToWatch) Then
                    RaiseEvent EventFolderCount(sender, e) 'Sender and e are never defined
                End If
            End If
        End If
    End Sub

我的問題是, sendere都永遠不會填充任何東西,因為它們位於我的WatcherEventArgs之外。

我敢肯定這可以做的更好,但是我不確定。 任何幫助,將不勝感激。 謝謝

您實際上在EventFolderCount方法中使用了senderEventArgs嗎? 您可以將Me傳遞給發送者,並傳遞一個空的EventArgs對象。

但是,事件參數“發件人”和“ e”是什么表示不建議嘗試引發該事件。 相反,您應該只有一個方法來完成任務,並且在兩個地方都調用了該方法。

我實際上通過將EventHandler更改為僅需要一個String變量而不是EventArgs來解決了這一問題:

Public Event EventFolderCount(filename As String)

這樣,我可以在FileSystemWatcher內部和外部輕松地調用它,如下所示:

RaiseEvent EventFolderCount(filename)

感謝@Dave Anderson為我指出正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM