C#多线程控制进度条之多线程安全的具体内容是什么呢?让我们开始吧:
到这里为止,我们已经解决了长任务的难题和传递参数的困扰。但是我们真的解决了全部问题吗?回答是否定的。
C#多线程控制进度条之多线程安全的问题:我们知道 Windows 编程中有一个必须遵守的原则,那就是在一个窗体创建线程之外的任何线程中都不允许操作窗体。
我们上面的程序就是存在这样的问题:工作线程是在 ShowProgress 方法中修改了用户界面的进度条的属性。那为什么程序运行没有出现问题,运行正常呢?
没有发生问题是因为是现在的Windows XP操作系统对这类问题有非常健壮的解决方法,让我们避免了问题的发生。但是我们现在的程序不能保证在其他的操作系统能够运行正常!
真正的解决方法是我们能够认识到问题所在,并在程序中加以避免。
C#多线程控制进度条之多线程安全图
如何避免多线程的窗体资源访问的安全问题呢?其实非常简单,有两种方法:
一种方法就是不管线程是否是用户界面线程,对用户界面资源的访问统一由委托完成;
另一种方法是在每个 Windows Forms 用户界面类中都有一个 InvokeRequired 属性,它用来标识当前线程是否能够直接访问窗体资源。我们只需要检查这个属性的值,只有当允许直接访问窗体资源时才直接访问相应的资源,否则,就需要通过 委托进行访问了。
C#多线程控制进度条之多线程安全实现:
采用第一种安全的方法的代码片断如下:
C#多线程控制进度条之多线程安全实现:
采用第二种安全的方法的代码片断如下:
至此,我们用了几个示例说明了如何执行长任务、如何通过多线程异步处理任务进度的显示并解决了多线程的安全性等问题。希望能够给大家对理解多线程编程、委托的使用、异步调用等方面提供一些帮助,也希望能和大家进行进一步的沟通和交流。
C#多线程控制进度条之多线程安全相关的内容就向你介绍到这里,希望对你了解和学习C#多线程控制进度条之多线程安全有所帮助。
分享到:
相关推荐
包含9个不同的进度条源码,C#多线程、进度条、C#多线程进度条、progressBar、实例源码、C#.NET winform 利用多线程技术,值得参考和学习!
c# 多线程 异步进度条,通过多线程方法实现 多任务 进度控制的同步 显示
利用多线程创建的经典的好用的精度条,供大家参考使用
简单winform多线程调用进度条的例子 BeginInvoke
c# 多线程 委托 进度条示例 标准用法/简单易用/带注示
实现多线程技术下的进度条,采用的是C#语言……
多线程 进度条解决方案。 文本,非项目 .定义 委托 delegate void myDelegate(int i); myDelegate mydelegate = null; 2.定义方法,显示消息 public void ShowMessage(int i) { this.textBox1.Text = i....
C#中实现backgroundwoker控件多线程的具体操作。
简单winform多线程调用进度条的例子 BeginInvoke
基于Winform的开发,主要用于熟悉多线程同步技术,在多线程下让多个进度条按照不用的速度运行。
C#多线程进度条设计 仅供学习参考不用于商业
利用多线程控制进度条的显示,是一个关于进度条的很好的例子,不妨下来看看。
用于调用进度条类,多线程显示结果,否则进度条不会刷新
QT多线程进度条刷新,线程分开控制;A线程开启后,B线程如果也同时开启,会被阻塞等A线程结束或者停止,才会被唤醒继续进行
添加执行完毕提示 简单很好的程序实例 代码是2008,可以转换为2010 具体请看实例
C#多线程之如何弹出一个模式窗口来显示进度条 学习版
在用c#做WinFrom开发的过程中。...这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息)。下面我就简单结合一个我写的例子给大家做一个介绍。....
winfrom的多线程显示进度条的demo。利用委托、多线程等,显示、运行进度条,包括对进程的,启动、暂停、继续运行和停止等,演示。
C# 多线程使用progressBar进行数据加载, 该例子主要是对progressBar控件的一个使用测试。并且计算了运行时间作为测试。 有疑问或者建议可以到我的blog,谢谢支持。 http://blog.csdn.net/Andrew_wx
C#多线程进度条,包含两种样式.说明下里面是编译好的DLL哟,直接拿来使用即可。里面有详细的使用说明及Demo展示!