/ / Как мога да се справям ръчно за FileSystemWatcher - vb.net, събития, filesystemwatcher, raiseevent

Как мога да увелича събитието ръчно за FileSystemWatcher - vb.net, събития, filesystemwatcher, raiseevent

Разширих класа FileSystemWatcherвключи монитор FolderCount и монитор FolderEmpty, който повдига събития, ако дадена папка достигне определено количество файлове или ако дадена папка се върне към празно състояние. Изглежда, че имам тази работа и получавам събития, повдигнати при тези условия.

Въпреки това, проблемът ми е, че когато моятаFileSystemWatcher първо се инициализира, автоматично влиза, за да провери съдържанието на папката в указаната папка, за да получи броя на файловете. Ако лимитът вече е достигнат, трябва незабавно да повдигна събитие, вместо да чакам FileSystemWatcher да го докладва.

В момента мога само да повдигна събития, като се включа в. \ T .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.

Аз съм сигурен, че това може да се направи по-добър начин, но аз не съм сигурен. Всяка помощ ще бъде оценена. Благодаря

Отговори:

1 за отговор № 1

Всъщност използвате ли sender и EventArgs във вашия EventFolderCount метод? Можете да минете Me за подателя и празната EventArgs обект.

въпреки това Какви са аргументите на събитието „подател“ и „е“ предполага, че опитът да се повиши събитието не е предпочитан. Вместо това трябва да имате един метод, който изпълнява задачата и да го извиква на двете места.


0 за отговор № 2

Всъщност реших това, променяйки EventHandler, за да изисквам само a String променлива, а не EventArgs:

Public Event EventFolderCount(filename As String)

По този начин мога да го нарека лесно вътре и извън FileSystemWatcher така:

RaiseEvent EventFolderCount(filename)

Благодаря @ Дейв Андерсън, за да ме посочи в правилната посока.