[英]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
我的問題是, sender
和e
都永遠不會填充任何東西,因為它們位於我的WatcherEventArgs
之外。
我敢肯定這可以做的更好,但是我不確定。 任何幫助,將不勝感激。 謝謝
您實際上在EventFolderCount
方法中使用了sender
和EventArgs
嗎? 您可以將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.