在文件上传下载这个例子中的委托与事件,主要是用于窗体与类之间的交互,在主窗体中定义了FileInfo类的对象fileInfo,当开始上传的时候,主窗体的进度条要根据finleInfo读写的进度进行相应的变化,此处就用到了委托与事件。先看下过程:
- 先在FileInfo类中定义委托,并用委托定义事件
public delegate void FileTranEventHandler(object sender, EventArgs e);//定义委托 public event FileTranEventHandler FileBuffer;//写完一块触发的事件
- 当点击上传按钮时,当事件的处理方法绑定到上事件上
fileInfo.FileBuffer += new FileInfo.FileTranEventHandler(fileInfo_FileBuffer); //传输一块完成事件
其中fileInfo_FileBuffer为窗体中进度条的变化方法。
- 在异步写函数的回调函数中就可以触发此事件
OnFileBuffer(new EventArgs());
protected virtual void OnFileBuffer(EventArgs e)
{
if(FileBuffer !=null)
FileBuffer(this,e);
}
这样当写完一块的时候,就可以触发进度条事件。