EnableRaisingEvents(启用和禁用它)

时间:2011-09-02 13:57:53

标签: c# events

我正在维护一些具有两个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;
}

从main开始,我可以将EnableRaisingEvents = true设置为EnableRaisingEvents = false。这两个事件都会索引某个文件夹中的文件,并制定一个回调方法。

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

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

1 个答案:

答案 0 :(得分:1)

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

在OnMessageReceived内部你可能会像

那样
public void OnMessageRecieved(Object sender, Events e) //Not the real signature
{
    MessageMonitor.Created -= OnMessageReceived();
    //Do Your things
    OtherMessageMonitor.Created += OnMessageReceived();
}
相关问题