EnableRaisingEvents(启用和禁用)

本文关键字:启用 EnableRaisingEvents | 更新日期: 2023-09-27 18:07:15

我正在维护一些代码,其中有两个FileSystemWatcher事件,这使得它难以调试(并且它有一个错误)。所以我的想法是通过顺序执行来简化代码。就像这样:

Main method
    1) normal code here
    2) enable event 1, let it check for files, disable it when it is done running once
    3) enable event 2, let it check for files, disable it when it is done running once

那么数据库日志就更有意义了。我就能看到程序的哪一部分出了问题。

private void InitializeFileSystemWatcher()
{
    this.MessageMonitor = new FileSystemWatcher(this.MessagePath, this.MessageFilter);
    this.MessageMonitor.IncludeSubdirectories = true; // Recursive.
    this.MessageMonitor.Created += new FileSystemEventHandler(OnMessageReceived);
    this.MessageMonitor.EnableRaisingEvents = true;
}

从主程序中,我可以将EnableRaisingEvents=true设置为EnableRaisingEvents=false。这两个事件都索引某个文件夹中的文件,并执行一个回调方法。

我的问题是:如果事件目前正在执行,我设置EnableRaisingEvents=false,它会暂停或继续执行,直到它完成?

如果它继续,我认为只是有一个bool doRUN变量设置在事件的开始和结束作为检查主方法。

EnableRaisingEvents(启用和禁用)

您应该在检查后分离事件处理程序,以确保它正常工作,然后实例化第二个FileSystemWatcher

在onmessagerreceived中,你可以输入像

这样的东西
public void OnMessageRecieved(Object sender, Events e) //Not the real signature
{
    MessageMonitor.Created -= OnMessageReceived();
    //Do Your things
    OtherMessageMonitor.Created += OnMessageReceived();
}