详情介绍c#中Winform实现多线程异步更新UI的示例代码


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

private void btnWrite_Click(object sender, EventArgs e)

{

 int taskCount = 10000; //任务量为10000

 this.pgbWrite.Maximum = taskCount;

 this.pgbWrite.Value = 0;

 

 DataWrite dataWrite = new DataWrite();//实例化一个写入数据的类

 dataWrite.UpdateUIDelegate += UpdataUIStatus;//绑定更新任务状态的委托

 dataWrite.TaskCallBack += Accomplish;//绑定完成任务要调用的委托

 

 Thread thread = new Thread(new ParameterizedThreadStart(dataWrite.Write));

 thread.IsBackground = true;

 thread.Start(taskCount);

}

 

//更新UI

private void UpdataUIStatus(int step)

{

 if (InvokeRequired)

 {

  this.Invoke(new AsynUpdateUI(delegate(int s)

  {

   this.pgbWrite.Value += s;

   this.lblWriteStatus.Text = this.pgbWrite.Value.ToString() + "/" + this.pgbWrite.Maximum.ToString();

  }), step);

 }

 else

 {

  this.pgbWrite.Value += step;

  this.lblWriteStatus.Text = this.pgbWrite.Value.ToString() + "/" + this.pgbWrite.Maximum.ToString();

 }

}

 

//完成任务时需要调用

private void Accomplish()

{

 //还可以进行其他的一些完任务完成之后的逻辑处理

 MessageBox.Show("任务完成");

}

效果如下:

总结

实现异步更新ui有很多种方法,但是我认为这种方式是比较灵活,能实时的获取到任务进行的状态,并且对之进行相应的处理。这种模式还适用于使用多个线程同时写入不同的数据到不同的文件中去。

以上就是详情介绍c#中Winform实现多线程异步更新UI的示例代码的详细内容!

返回前面的内容

相关阅读 >>

C#日期格式转换的公共方法类的实现详解

C#接口的实例详解

C# winform制作不规则窗体(代码)

分析C#httpwebrequest访问https错误处理的方法

C# 读取u盘序列号进行验证的示例代码

C#如何使用浏览按钮获得文件路径和文件夹路径的实现方法

关于C#如何将word转换成pdf的方法汇总

C#获取系统当前鼠标的图案示例代码

unity 3d 浅谈shader 运行时状态及渲染模式遇到的问题

.net winform的gdi双缓冲的实现方法_实用技巧

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...