C# 异步控制进度条
2016-02-17 20:07
399 查看
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace MyPrograssBar { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // 定义委托,异步调用 delegate void ShowProgressDelegate(int totalStep, int currentStep); private void button1_Click(object sender, EventArgs e) { ParameterizedThreadStart start = new ParameterizedThreadStart(SetProgress); Thread progressThread = new Thread(start); progressThread.IsBackground = true; progressThread.Start(); } /// <summary> /// 设置当前进度 /// </summary> /// <param name="state"></param> void SetProgress(object state) { for (int i = 1; i <= 100; i++) { Thread.Sleep(200); // 异步调用 this.Invoke(new ShowProgressDelegate(ShowProgress), new object[] { 100, i }); } } /// <summary> /// 刷新进度条 /// </summary> /// <param name="totalStep"></param> /// <param name="currentStep"></param> void ShowProgress(int totalStep, int currentStep) { this.progressBar1.Maximum = totalStep; this.progressBar1.Value = currentStep; this.label1.Text = this.progressBar1.Value * 100 / progressBar1.Maximum + "%"; } private void button2_Click(object sender, EventArgs e) { ThreadStart start = new ThreadStart(ThreadTest); Thread testThread = new Thread(start); testThread.IsBackground = true; testThread.Start(); } private void ThreadTest() { for (int i = 1; i <= 100; i++) { Thread.Sleep(200); } MessageBox.Show("Hello world!"); } } }
相关文章推荐
- C#之接口项目
- C#自定义控件UserControl在工具箱中没有显示的解决办法
- c#中去掉字符串空格方法
- C#循环测试题
- C# 中反射获取某类的子类和根据类型名动态创建对象
- 解析C#设计模式编程中的装饰者模式
- C# 二分查询
- 深入解析C#设计模式中对桥接模式的具体运用
- C#中异步编程模型
- c#中abstract、override、new、virtual、sealed使用和示例
- c# - Log4Net
- c# 连接access 增删改一条龙
- 简单了解C#设计模式编程中的桥接模式
- C# xml可序列化多值枚举脚本
- C#设计模式编程中运用适配器模式结构实战演练
- c#数组,手机号随机数抽奖
- 解析C#设计模式编程中适配器模式的实现
- 登山-C#-var关键字,dynamic关键字和类型强制转换之间的区别
- C#编程中使用设计模式中的原型模式的实例讲解
- C# Load DLL From Embedded Resource(把exe和dll捆绑起来)