如何为 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
我的问题是 sender
和 e
都没有填充任何东西,因为它们位于我的 WatcherEventArgs
.
之外
我确信这可以通过更好的方式完成,但我不确定。任何帮助,将不胜感激。谢谢
你真的在你的 EventFolderCount
方法中使用了 sender
和 EventArgs
吗?您可以为发件人传递 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 为我指明了正确的方向。
我扩展了 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
我的问题是 sender
和 e
都没有填充任何东西,因为它们位于我的 WatcherEventArgs
.
我确信这可以通过更好的方式完成,但我不确定。任何帮助,将不胜感激。谢谢
你真的在你的 EventFolderCount
方法中使用了 sender
和 EventArgs
吗?您可以为发件人传递 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 为我指明了正确的方向。