找传奇、传世资源到传世资源站!

c# Winform异步线程刷新UI

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

使用开发工具为VS2013;.net:4.0 多线程异步刷新ui界面,实时获取任务进度并进行反馈。
from clipboard
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 异步刷新进度条1{ public partial class Form1 : Form { delegate void AsynUpdateUI(int step); public Form1() { InitializeComponent(); } 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("任务完成"); } }}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复