在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C#中的事件是建立在委托的基础上,标准的事件模型应该包括以下几点:
文件下载时,要实时更新进度条,这时更新进度的方法就应该由下载类在下载的同时根据实时的下载进度利用事件去同步更新进度条的值,代码如下: 1 namespace demo 2 { 3 public partial class Form1 : Form 4 { 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 private void button1_Click(object sender, EventArgs e) 11 { 12 FileUploader f1 = new FileUploader(); 13 f1.FileUploaded += ShowProcess; //绑定事件 14 ThreadPool.QueueUserWorkItem((a) => f1.Upload());//加入线程池 15 } 16 17 private void ShowProcess(object sender, FileUploaderEventArgs e) 18 { 19 //定义委托 20 Action t = () => 21 { 22 progressBar1.Value = e.FileProgress; 23 label1.Text = e.FileProgress.ToString(); 24 }; 25 26 //跨线程操作 27 this.BeginInvoke(t); 28 Thread.Sleep(500); 29 } 30 } 31 32 /// <summary> 33 /// 文件下载类 34 /// </summary> 35 class FileUploader 36 { 37 public event EventHandler<FileUploaderEventArgs> FileUploaded;//定义事件 38 public void Upload() 39 { 40 var e = new FileUploaderEventArgs() { FileProgress = 0 }; 41 while (e.FileProgress < 100) 42 { 43 e.FileProgress++; 44 FileUploaded(this, e);//触发事件 45 } 46 } 47 } 48 49 /// <summary> 50 /// 自定义参数 51 /// </summary> 52 class FileUploaderEventArgs : EventArgs 53 { 54 public int FileProgress { get; set; } 55 } 56 } 运行截图:
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论