如何为FileSystemWatcher手动RaiseEvent

时间:2015-07-30 01:35:33

标签: vb.net events filesystemwatcher raiseevent

我扩展了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之外。

我确信这可以做得更好,但我不确定。任何帮助,将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

您实际使用sender方法中的EventArgsEventFolderCount吗?您可以为发件人和空Me对象传递EventArgs

然而What are the event arguments “sender” and “e”建议尝试举起活动不是首选。相反,你应该有一个方法来完成任务,并在两个地方都有调用。

答案 1 :(得分:0)

我实际上通过将我的EventHandler更改为仅需要String变量而不是EventArgs来解决此问题:

Public Event EventFolderCount(filename As String)

通过这种方式,我可以轻松地在FileSystemWatcher内外调用它:

RaiseEvent EventFolderCount(filename)

感谢@Dave Anderson指出我正确的方向。