C#多线程控制进度条之长任务操作

开发 后端
C#多线程控制进度条之长任务操作具体的是如何的呢?C#多线程控制进度条之长任务操作需要注意什么呢?那么本文就向你介绍相关的内容。

C#多线程控制进度条之长任务操作

许多种类的应用程序都需要长时间操作,比如:执行一个打印任务,请求一个 Web Service 调用等。用户在这种情况下一般会去转移做其他事情来等待任务的完成,同时还希望随时可以监控任务的执行进度。

阻塞方式执行 

C#多线程控制进度条之长任务操作图1

下面的代码片断示例了当长任务执行时用户界面是如何被更新的。

  1. // 显示进度条  ,C#多线程控制进度条之长任务操作
  2. void ShowProgress( int totalStep, int currentStep )  
  3. {  
  4. _Progress.Maximum = totalStep;  
  5. _Progress.Value = currentStep;  
  6. }  
  7.  
  8. // 执行任务  
  9. void RunTask( int seconds )  
  10. {  
  11. // 每 1 / 4 秒 显示进度一次  
  12. forint i = 0; i < seconds * 4; i++ )  
  13. {  
  14. Thread.Sleep( 250 );  
  15.  
  16. // 显示进度条 ,C#多线程控制进度条之长任务操作 
  17. ShowProgress( seconds * 4, i + 1 );  
  18. }  
  19. }  
  20.  
  21. private void _btnRun_Click(   
  22.  
  23. object sender, System.EventArgs e )  
  24. {  
  25. RunTask( Convert.ToInt32( _txtSecond.Value ) );  

当我们运行上面的程序,在整个长任务的过程中,没有出现任何问题。这样就真的没有问题了吗?当我们切换应用程序去做其他事情后再切换回来,问题就发生了!主窗体就会出现如下情况:

运行结果 

C#多线程控制进度条之长任务操作图2

这个问题当然会发生,因为我们现在的应用程序是单线程的,因此,当线程执行长任务时,它同时也就不能重画用户界面了。

为什么在我们切换应用程序后,问题才发生呢?这是因为当你切换当前应用程序到后台再切换回前台时,我们需要重画整个用户界面。但是应用程序正在执行长任务,根本没有时间处理用户界面的重画,问题就会发生。

如何解决问题呢?我们需要将长任务放在后台运行,把用户界面线程解放出来,因此我们需要另外一个线程。

C#多线程控制进度条之长任务操作的基本情况就向你介绍到这里,希望对你学习和了解C#多线程控制进度条之长任务操作有所帮助。

【编辑推荐】

  1. C#进度条使用之多线程应用浅析
  2. C#进度条实现之异步实例浅析
  3. C#进度条实现实例
  4. C#进度条之控制台显示浅析
  5. C# WinForm进度条实现浅析
责任编辑:仲衡 来源: 博客园
相关推荐

2009-08-17 16:41:03

C#多线程控制

2009-08-17 16:56:51

C#多线程控制进度条

2009-08-17 16:49:46

C#多线程控制

2009-08-17 14:08:33

C#进度条使用

2009-08-17 15:05:41

C#进度条

2009-08-18 09:49:00

C# listview

2009-08-17 15:48:47

C# WinForm进

2009-08-17 14:41:47

C#进度条实现

2009-08-28 16:51:32

C#线程控制

2011-07-05 15:16:00

QT 进度条

2009-08-17 14:36:15

C#进度条实现

2009-08-17 13:56:29

C#进度条的使用

2009-08-17 17:15:48

C# 进度条效果

2015-07-31 11:19:43

数字进度条源码

2009-08-27 14:01:41

C#进度条

2021-09-09 07:16:00

C#多线程开发

2011-06-24 11:12:39

Qt 多线程 线程

2009-09-04 10:42:56

C#流程控制语句

2012-01-17 13:58:17

JavaSwing

2009-06-06 18:54:02

JSP编程进度条
点赞
收藏

51CTO技术栈公众号