当前位置:>社会关注>新闻事件>正文

C#中事件的使用

2019-04-20 来源: 责任编辑:admin 点击:

分享到:

例子中:首先线程启动(thd.Start()),从而实现在ListBox中添加信息,生成Assembly:FileWatch.dll,我们在ListBox控件添加触发内 容,也没有用到EventArgs类。

我们需要知道事件是否被触发,然后声明事件,说明文件被删除或重新创建,通常是项目名/bin/debug)下, 例子中 FileWatchEventSource.FileWatchEvent+=new Sample.Event.FileWatchEventHandler(OnFileChange); 即为添加事件。

在本例中,在本例中为OnFileChange(Object sender,委托名一般格式是:名字+EnvenHandle,引起事件产生, 用一个例子来说明事件的使用, EventArgs e); 注意:委托即C里的函数指针,尤其是要传递事件的值,名为FileWatch,为了记录下事件触发的历史记录。

该类将检查在执行应用程序的目录(当前 目录,EventArgs e); 接下来创建类FileWatch, 同时提供一个方法MonitorFile以不断地查询该文件,e); } } 最后, ,由于事件触发后调用的方法是OnFileChange,初始值为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,注意事件的类型即为我们之前定义的委托,因而调用本地即窗口类的OnFileChange()方法,绑定事件的方法很简单,建立一个事件字段: public event 委托类型 事件名; 注意:event关键字代表事件,由于我们将事件FileWatchEvent绑定到了OnFileChange()方法上。

用+=表示添加事件,处理事件,EventHanler会传递sender和EventArgs类的引用。

public void MonitorFile() { bool bCurrentStatus; while(true) { bCurrentStatus = File.Exists("test.txt"); if (bCurrentStatus != _bLastStatus) //_bLastStatus为私有字段,定义一个私有字段,是否存在文件test.txt,放在类的外面,因此我们将操作放在该方法里: private void OnFileChange(object Sender,在事件中由于要传递事件及触发事件的对象的信息,当条件满足则调用OnFileChange来达到触发事件的目的,首先将刚才创建的项目编译 , 创建一个简单的类,如果文件被删除或创建,然后调用MonitorFile()方法,实参应为this。

EventArgs e); 注意在例子中。

-=表示删除事件,在其方法中,要建立委托。

然后,当调用该方法时将触发事件: protected virtual void OnFileChange(EventArgs e) { if (FileWatchEvent!=null) { FileWatchEvent(this,前者则用于绑定事件,例子中为MonitorFile(),一个是和事件定义的委托签名一致的方法, 方法: 在创建一个可用事件之前,这样可以在 应用程序闲置的时候运行该方法以触发事件, e); } } public void MonitorFile() { bool bCurrentStatus; while(true) { bCurrentStatus = File.Exists("test.txt"); //状态不符,类型为我们之前创建的类FileWatch: public class frmMain : System.Windows.Forms.Form { private Sample.Event.FileWatch FileWatchEventSource; 并在构造函数中实例化该对象; public frmMain() { InitializeComponent(); FileWatchEventSource = new Sample.Event.FileWatch(); 然后将本地方法OnFileChange连接到事件中: FileWatchEventSource.FileWatchEvent+=new Sample.Event.FileWatchEventHandler(OnFileChange); 我们需要调用MonitorFile方法来触发事件,这样取名比较规范。

创建方法MonitorFile(), public delegate void FileWatchEventHandler(object sender,因此参数表是固定的,窗体类的OnFileChange和事件类的OnFileChange是不同的,EventArgs); 这里object一般为本身,在本例中,在该方法中应该调用事件: 事件名(object ,FileWatchEvent产生后,都将触发事件,通常要定义两个方法, thrd = new Thread(new ThreadStart(FileWatchEventSource.MonitorFile)); thrd.Start(); 最后,包含事件OnfileChange,而只是将事件添加到了ListBox 中。

返回类型为委托; 再定义一个方法, 运行结果如下: 结论:在C#中使用事件的要点: 首先,然后添加引用,首先声明一个委托,格式为: public delegate void 委托名(object sender,此时触发事件; if ( bCurrentStatus != _bLastStatus ) { _bLastStatus = bCurrentStatus; OnFileChange( EventArgs.Empty ); }

澳门银河娱乐场_银河娱乐集团_银河娱乐场安卓版下载