winform 多线程程序如何创建winform进度条怎么自动走

51CTO旗下网站
C#多线程控制进度条之多线程安全
C#多线程控制进度条之多线程安全具体的是什么情况呢?C#多线程控制进度条之多线程安全都有哪些是需要注意的呢?那么本文就向你介绍这些相关的内容。
作者:tannaiyin来源:博客园| 16:56
C#多线程控制进度条之多线程安全的具体内容是什么呢?让我们开始吧:
到这里为止,我们已经解决了长任务的难题和传递参数的困扰。但是我们真的解决了全部问题吗?回答是否定的。
C#多线程控制进度条之多线程安全的问题:我们知道 Windows 编程中有一个必须遵守的原则,那就是在一个窗体创建线程之外的任何线程中都不允许操作窗体。
我们上面的程序就是存在这样的问题:工作线程是在 ShowProgress 方法中修改了用户界面的进度条的属性。那为什么程序运行没有出现问题,运行正常呢?
没有发生问题是因为是现在的Windows XP操作系统对这类问题有非常健壮的解决方法,让我们避免了问题的发生。但是我们现在的程序不能保证在其他的操作系统能够运行正常!
真正的解决方法是我们能够认识到问题所在,并在程序中加以避免。
C#多线程控制进度条之多线程安全图
如何避免多线程的窗体资源访问的安全问题呢?其实非常简单,有两种方法:
一种方法就是不管线程是否是用户界面线程,对用户界面资源的访问统一由委托完成;
另一种方法是在每个 Windows Forms 用户界面类中都有一个 InvokeRequired 属性,它用来标识当前线程是否能够直接访问窗体资源。我们只需要检查这个属性的值,只有当允许直接访问窗体资源时才直接访问相应的资源,否则,就需要通过 委托进行访问了。
C#多线程控制进度条之多线程安全实现:
采用第一种安全的方法的代码片断如下:&delegate&void&ShowProgressDelegate( &&int&totalStep,&int&currentStep&); &&&void&ShowProgress(&int&totalStep,&int&currentStep&) &{ &_Progress.Maximum&=&totalS &_Progress.Value&=&currentS &} &&&delegate&void&RunTaskDelegate(&int&seconds&); &&&void&RunTask(&int&seconds&) &{ &ShowProgressDelegate&showProgress&=& &new&ShowProgressDelegate(&ShowProgress&); &&&for(&int&i&=&0;&i&&&seconds&*&4;&i++&) &{ &Thread.Sleep(&250&); &&&this.Invoke(&showProgress, &&new&object[]&{&seconds&*&4,&i&+&1&}&); &} &}&
C#多线程控制进度条之多线程安全实现:
采用第二种安全的方法的代码片断如下:&delegate&void&ShowProgressDelegate( &&int&totalStep,&int&currentStep&); &&&void&ShowProgress(&int&totalStep,&int&currentStep&) &{ &if(&_Progress.InvokeRequired&) &{ &ShowProgressDelegate&showProgress&=& &new&ShowProgressDelegate(&ShowProgress&); &&&this.BeginInvoke(& &showProgress,&new&object[]&{& &totalStep,&currentStep&}&); &} &else&{ &_Progress.Maximum&=&totalS &_Progress.Value&=&currentS &} &} &//C#多线程控制进度条之多线程安全&&delegate&void&RunTaskDelegate(&int&seconds&); &&&void&RunTask(&int&seconds&) &{ &&for(&int&i&=&0;&i&&&seconds&*&4;&i++&) &{ &Thread.Sleep(&250&); &&&ShowProgress(&seconds&*&4,&i&+&1&); &} //C#多线程控制进度条之多线程安全}&
至此,我们用了几个示例说明了如何执行长任务、如何通过多线程异步处理任务进度的显示并解决了多线程的安全性等问题。希望能够给大家对理解多线程编程、委托的使用、异步调用等方面提供一些帮助,也希望能和大家进行进一步的沟通和交流。
C#多线程控制进度条之多线程安全相关的内容就向你介绍到这里,希望对你了解和学习C#多线程控制进度条之多线程安全有所帮助。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
关注头条头条热点关注
24H热文一周话题本月最赞
讲师:127482人学习过
讲师:153928人学习过
讲师:17035人学习过
精选博文论坛热帖下载排行
本书所介绍的Struts 2已经完全超出了Struts 1框架原有的高度,Struts 2建立在Struts 1和WebWork两个框架整合的基础之上,因此提供了更多优...
订阅51CTO邮刊winform 耗时后台操作,怎么用动态进度条显示操作进度? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。1被浏览458分享邀请回答暂时还没有回答,开始写第一个回答全部答案(共1个回答)
进度数据,然后主线程根据这些数据更新进度条
给这个进程设定数量,然后通过执行到不同的阶段来更新百分比,接着更新进度条(需要用委托,否则进度条不会刷新)总会有开始和结束的吧,你可以在进程处理的过程中抛出一些...
win10?兼容?xp以上的系统????xp能玩的?win10就能玩
什么意思的?不明白的?
你可以用图形工具去绘制一个矩形或者椭圆形的长条,这个的 话我感觉用动画软件做最方便
this.控件名.Dispose()
用jquery 来实现很简单,div 的“进度”就是本身百分比长度,对吧,123
123456var w_width = $('.progress-wrp'...
答: 需要快播才能观看的那个视频网叫什么
答: 你好,没有网络的电脑是可以播放出教学碟片的,我朋友试过,放心哦。【帅哥!美女!如果对您有帮助,给我的答案一个好评哦^^,谢谢,亲】
答: 好好学习了,真的不错哦
餐饮业厨房产生的油烟,顾名思义,废气中主要污染物为油烟,一般采用静电除油。
液化气属较清洁能源,废气污染程度不高,主要含二氧化碳一氧化碳吧。
柴油属石油类,废气含二氧化硫和氮氧化物,二氧化硫碱液喷淋即可去除,氮氧化物主要以一氧化氮为主,要催化氧化成二氧化氮才能被碱吸收,造价成本非常高,一般的柴油发电机尾气难以治理,除非大型发电厂。
煤炭废气含二氧化硫多,一般常用的脱硫工艺即可。
海鸟的种类约350种,其中大洋性海鸟约150种。比较著名的海鸟有信天翁、海燕、海鸥、鹈鹕、鸬鹚、鲣鸟、军舰鸟等。海鸟终日生活在海洋上,饥餐鱼虾,渴饮海水。海鸟食量大,一只海鸥一天要吃6000只磷虾,一只鹈鹕一天能吃(2~2.5)kg鱼。在秘鲁海域,上千万只海鸟每年要消耗?鱼400×104t,它们对渔业有一定的危害,但鸟粪是极好的天然肥料。中国南海著名的金丝燕,用唾液等作成的巢被称为燕窝,是上等的营养补品。
对于由非金属通过共价键形成的化合物,极性与否不是看键是不是极性的.而是要分析几个键之间的相互作用力是否可以抵消,像CO2是直线型的,结构式为:O=C=O,作用力等效作用于碳原子两边,按物理上的受力分析来看,不正好得以抵消吗?而SO2由于受力方向不同,就无法达到这样的效果.
平时做的练习里也常常会出现让你写一下分子构型或是电子式的,出现频率较高的有:NH3(三角锥型),CH4(正四面体),CO2(直线型),像过氧化物的有时也会让你写一下电子式.这些一般讲知识点的时候老师都会提及到的.
考虑是由于天气比较干燥和身体上火导致的,建议不要吃香辣和煎炸的食物,多喝水,多吃点水果,不能吃牛肉和海鱼。可以服用(穿心莲片,维生素b2和b6)。也可以服用一些中药,如清热解毒的。
确实没有偿还能力的,应当与贷款机构进行协商,宽展还款期间或者分期归还; 如果贷款机构起诉到法院胜诉之后,在履行期未履行法院判决,会申请法院强制执行; 法院在受理强制执行时,会依法查询贷款人名下的房产、车辆、证券和存款;贷款人名下没有可供执行的财产而又拒绝履行法院的生效判决,则有逾期还款等负面信息记录在个人的信用报告中并被限制高消费及出入境,甚至有可能会被司法拘留。
第一步:教育引导
不同年龄阶段的孩子“吮指癖”的原因不尽相同,但于力认为,如果没有什么异常的症状,应该以教育引导为首要方式,并注意经常帮孩子洗手,以防细菌入侵引起胃肠道感染。
第二步:转移注意力
比起严厉指责、打骂,转移注意力是一种明智的做法。比如,多让孩子进行动手游戏,让他双手都不得闲,或者用其他的玩具吸引他,还可以多带孩子出去游玩,让他在五彩缤纷的世界里获得知识,增长见识,逐渐忘记原来的坏习惯。对于小婴儿,还可以做个小布手套,或者用纱布缠住手指,直接防止他吃手。但是,不主张给孩子手指上“涂味”,比如黄连水、辣椒水等,以免影响孩子的胃口,黄连有清热解毒的功效,吃多了还可导致腹泻、呕吐。
合肥政务区网络广告推广网络推广哪家公司比较好 一套能在互联网上跑业务的系统,被网络营销专家赞为目前最 有效的网络推广方式!
1、搜索引擎营销:分两种SEO和PPC,即搜索引擎优化,是通过对网站结构、高质量的网站主题内容、丰富而有价值的相关性外部链接进行优化而使网站为用户及搜索引擎更加友好,以获得在搜索引擎上的优势排名为网站引入流量。
良工拥有十多位资深制冷维修工程师,十二年生产与制造经验,技术力量雄厚,配有先进的测试仪器,建有系列低温测试设备,备有充足的零部件,包括大量品牌的压缩机,冷凝器,蒸发器,水泵,膨胀阀等备品库,能为客户提供迅捷,优质的工业冷水机及模温机维修和保养。
楼主,龙德教育就挺好的,你可以去试试,我们家孩子一直在龙德教育补习的,我觉得还不错。
成人可以学爵士舞。不过对柔软度的拒绝比较大。  不论跳什么舞,如果要跳得美,身体的柔软度必须要好,否则无法充分发挥出理应的线条美感,爵士舞也不值得注意。在展开暖身的弯曲动作必须注意,不适合在身体肌肉未几乎和暖前用弹振形式来做弯曲,否则更容易弄巧反拙,骨折肌肉。用静态方式弯曲较安全,不过也较必须耐性。柔软度的锻炼动作之幅度更不该超过疼痛的地步,肌肉有向上的感觉即可,动作(角度)保持的时间可由10馀秒至30-40秒平均,时间愈长对肌肉及关节附近的联结的组织之负荷也愈高。
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区您现在的位置是: >
推荐星级:
c#文件下载多线程方式带进度条
部分文件列表
文件名大小文件下载多线程方式带进度条/1KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/1KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Form1.Designer.cs7KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Form1.cs3KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Form1.resx6KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Program.cs1KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Properties/1KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Properties/AssemblyInfo.cs1KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Properties/Resources.Designer.cs3KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Properties/Resources.resx5KB文件下载多线程方式带进度条/文件下载多线程方式带进度条/Properties/Settings.Designer.cs1KB...
下载本资源的用户还喜欢
已有 249816 个资源
项 目 外 包
工作经验:不限 | 学历:博士
25K-35K | 广东省 深圳市
工作经验:1-3年 | 学历:本科
10K-15K | 广东省 深圳市
工作经验:3-5年 | 学历:本科
面议 | 江苏省 南京市
工作经验:1-3年 | 学历:专科
6K-8K | 广东省 深圳市
工作经验:1-3年 | 学历:专科
8K-10K | 广东省 深圳市C#多线程之如何弹出一个模式窗口来显示进度条_百度知道
C#多线程之如何弹出一个模式窗口来显示进度条
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.L
using System.T
using System.Windows.F
using System.T
namespace Demo0004
public partial class Form1 : Form
public Form1()
InitializeComponent();
//线程开始的时候调用的委托
private delegate void maxValueDelegate(int maxValue);
//线程执行中调用的委托
private delegate void nowValueDelegate(int nowValue);
private void button1_Click(object sender, EventArgs e)
ThreadMethod method = new ThreadMethod();
//先订阅一下事件
method.threadStartEvent += new EventHandler(method_threadStartEvent);
method.threadEvent += new EventHandler(method_threadEvent);
method.threadEndEvent += new EventHandler(method_threadEndEvent);
Thread thread = new Thread(new ThreadStart(method.runMethod));
thread.Start();
/// &summary&
/// 线程开始事件,设置进度条最大值
/// 但是我不能直接操作进度条,需要一个委托来替我完成
/// &/summary&
/// &param name=&sender&&ThreadMethod函数中传过来的最大值&/param&
/// &param name=&e&&&/param&
void method_threadStartEvent(object sender, EventArgs e)
int maxValue = Convert.ToInt32(sender);
maxValueDelegate max = new maxValueDelegate(setMax);
this.Invoke(max, maxValue);
/// &summary&
/// 线程执行中的事件,设置进度条当前进度
/// 但是我不能直接操作进度条,需要一个委托来替我完成
/// &/summary&
/// &param name=&sender&&ThreadMethod函数中传过来的当前值&/param&
/// &param name=&e&&&/param&
void method_threadEvent(object sender, EventArgs e)
int nowValue = Convert.ToInt32(sender);
nowValueDelegate now = new nowValueDelegate(setNow);
this.Invoke(now, nowValue);
/// &summary&
/// 线程完成事件
/// &/summary&
/// &param name=&sender&&&/param&
/// &param name=&e&&&/param&
void method_threadEndEvent(object sender, EventArgs e)
MessageBox.Show(&执行已经完成!&);
/// &summary&
/// 我被委托调用,专门设置进度条最大值的
/// &/summary&
/// &param name=&maxValue&&&/param&
private void setMax(int maxValue)
this.progressBar1.Maximum = maxV
/// &summary&
/// 我被委托调用,专门设置进度条当前值的
/// &/summary&
/// &param name=&nowValue&&&/param&
private void setNow(int nowValue)
this.progressBar1.Value = nowV
public class ThreadMethod
/// &summary&
/// 线程开始事件
/// &/summary&
public event EventHandler threadStartE
/// &summary&
/// 线程执行时事件
/// &/summary&
public event EventHandler threadE
/// &summary&
/// 线程结束事件
/// &/summary&
public event EventHandler threadEndE
public void runMethod()
int count = 100;
//执行多少次
threadStartEvent.Invoke(count, new EventArgs());//通知主界面,我开始了,count用来设置进度条的最大值
for (int i = 0; i & i++)
Thread.Sleep(100);//休息100毫秒,模拟执行大数据量操作
threadEvent.Invoke(i, new EventArgs());//通知主界面我正在执行,i表示进度条当前进度
threadEndEvent.Invoke(new object(), new EventArgs());//通知主界面我已经完成了
采纳率:96%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 winform进度条怎么自动走 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信