如何为 FileSystemWatcher 手动引发事件

How Can I RaiseEvent Manually For A FileSystemWatcher

我扩展了 FileSystemWatcher class 以合并 FolderCount 监视器和 FolderEmpty 监视器,如果文件夹达到指定数量的文件或文件夹 returns 为空状态,它们会引发事件。我似乎可以正常工作,并且在这些情况发生时会引发事件。

但是,我的问题是,当我的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 对象。

但是 What are the event arguments “sender” and “e” 建议不要尝试引发事件。相反,您应该有一个方法来完成任务并在两个地方都调用它。

我实际上通过将我的 EventHandler 更改为只需要一个 String 变量而不是 EventArgs:

来解决这个问题
Public Event EventFolderCount(filename As String)

这样我就可以在 FileSystemWatcher 的内部和外部轻松调用它,如下所示:

RaiseEvent EventFolderCount(filename)

感谢@Dave Anderson 为我指明了正确的方向。