C#中事件的定义和使用

2019-12-30 12:49:01王振洲

 

现在创建方法OnFileChange(),当调用该方法时将触发事件:

 

复制代码 protected virtual void OnFileChange(EventArgs e)
{
     if (FileWatchEvent!=null)
     {
         FileWatchEvent(this,e);
     }
}

 

最后,创建方法MonitorFile(),

 

复制代码 public void MonitorFile()
{
    bool bCurrentStatus;
   
    while(true)
    {
         bCurrentStatus = File.Exists("test.txt");
         if (bCurrentStatus != _bLastStatus) //_bLastStatus为私有字段,初始值为false;
         {
             _bLastStatus = bCurrentStatus;
             OnFileChange(EventArgs.Empty);
         }
    
         Thread.Sleep(250);
    }
}

 

完整代码如下:

 

复制代码 using System;
using System.Threading; 
using System.IO;     

 

namespace Sample.Event
{

      public delegate void FileWatchEventHandler(object sender, EventArgs e);

      public class FileWatch
      {
            private bool _bLastStatus = false;
            public FileWatch()
            {
                  //
                  // TODO: 在此处添加构造函数逻辑
                  //