winform异步进度条LongTime,运用到回调函数

定义事件的参数类:

namespace LongTime.Business
{
// 定义事件的参数类
public class ValueEventArgs
: EventArgs
{
public int Value { set; get;}
} // 定义事件使用的委托
public delegate void ValueChangedEventHandler( object sender, ValueEventArgs e); class LongTimeWork
{
// 定义一个事件来提示界面工作的进度
public event ValueChangedEventHandler ValueChanged; // 触发事件的方法
protected void OnValueChanged( ValueEventArgs e)
{
if( this.ValueChanged != null)
{
this.ValueChanged( this, e);
}
} public void LongTimeMethod()
{
for (int i = ; i < ; i++)
{
// 进行工作
System.Threading.Thread.Sleep(); // 触发事件
ValueEventArgs e = new ValueEventArgs() { Value = i+};
this.OnValueChanged(e);
}
}
}
}

WINFORM后台代码

   public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} // 进度发生变化之后的回调方法
private void workder_ValueChanged(object sender, Business.ValueEventArgs e)
{
System.Windows.Forms.MethodInvoker invoker = () =>
{
this.progressBar1.Value = e.Value;
}; if (this.progressBar1.InvokeRequired)
{
this.progressBar1.Invoke(invoker);
}
else
{
invoker();
}
} private void button1_Click(object sender, EventArgs e)
{
// 禁用按钮
this.button1.Enabled = false; // 实例化业务对象
LongTime.Business.LongTimeWork workder = new Business.LongTimeWork(); workder.ValueChanged += new Business.ValueChangedEventHandler(workder_ValueChanged); // 使用异步方式调用长时间的方法
Action handler = new Action(workder.LongTimeMethod);
handler.BeginInvoke(
new AsyncCallback(this.AsyncCallback),
handler
);
} // 结束异步操作
private void AsyncCallback(IAsyncResult ar)
{
// 标准的处理步骤
Action handler = ar.AsyncState as Action;
handler.EndInvoke(ar); MessageBox.Show("工作完成!"); System.Windows.Forms.MethodInvoker invoker = () =>
{
// 重新启用按钮
this.button1.Enabled = true;
}; if (this.InvokeRequired)
{
this.Invoke(invoker);
}
else
{
invoker();
}
} }

http://download.csdn.net/detail/yekeyishuo/6485957

winform异步进度条LongTime的更多相关文章

  1. (四十一)c#Winform自定义控件-进度条

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  2. (四十二)c#Winform自定义控件-进度条扩展

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  3. win10 uwp 异步进度条

    本文主要讲我设计的几个进度条,还有如何使用异步控制进度条,如何使用动画做进度. 进度条可以参见:http://edi.wang/post/2016/2/25/windows-10-uwp-modal- ...

  4. 关于C# WinForm中进度条的实现方法

    http://www.cnblogs.com/Sue_/articles/2024932.html 进度条是一个软件人性化考虑之一,他给用户的感觉就是程序内部在不停的动作,执行到了什么程度,而不是整个 ...

  5. (七)c#Winform自定义控件-进度条

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  6. C# winform带进度条的图片下载

    代码如下: public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } private void ...

  7. c# 异步进度条组件BackgroundWorker

    //控件事件调用DoWork()方法就行. #region 进度条 private BackgroundWorker worker = null; private void DoWork(string ...

  8. C#winform使用进度条

    在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息 ...

  9. asp.net XMLHttpRequest 进度条以及lengthComputable always false的解决办法

    一直用ajax好长时间了,对其原理也有一些了解,最近由于项目需要,使用ajax异步进度条的效果,就研究了一下,用原生的XMLHttpRequest实现进度条函数,XMLHttpRequest有以下函数 ...

随机推荐

  1. linux下的chmod,chown和chgrp

    对于linux的权限掌握以下几个命令就可以非常熟练的操作系统中的各种权限了. 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode f ...

  2. C++工程编译之“error LNK2001: 无法解析的外部符号”

    今天一整天都在折腾“error LNK2001: 无法解析的外部符号”,就在头疼不已的时候,总算是找到问题原因了:各个动态链接库的编译方式必须统一才行,要不然很容易对库函数的引用产生冲突.简单来说就是 ...

  3. UI-UIImageView和Image的区别

    1.UIImageView图片视图控件 继承于UIView 用于显示图片在应用程序中 2.UIImage 是将真实图片文件转化为程序中的图片,然后3.UIImageView是Image的载体,负责显示 ...

  4. sql访注入

    http://www.dewen.org/q/6154/java%E7%A8%8B%E5%BA%8F%E9%98%B2%E6%AD%A2sql%E6%B3%A8%E5%85%A5%E7%9A%84%E ...

  5. sql 操作,

    SELECT * FROM dbo.tbl_Web_Photos AS pt LEFT JOIN dbo.tbl_Web_Friends AS fd ON pt.user_email=fd.AddEm ...

  6. Spring实战2:装配bean—依赖注入的本质

    主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须 ...

  7. 51nod1253 Kundu and Tree

    树包含N个点和N-1条边.树的边有2中颜色红色('r')和黑色('b').给出这N-1条边的颜色,求有多少节点的三元组(a,b,c)满足:节点a到节点b.节点b到节点c.节点c到节点a的路径上,每条路 ...

  8. thinkphp禁止模版标签解析

    场景: 页面中某些样式或者js中含有tp定义的模版标签,如果被tp当成模版标签解析,就会解析异常. tp中提供了<literal></literal>标签用于禁止标签内部的代码 ...

  9. 黄聪:发送键盘指令System.Windows.Forms.SendKeys.Send

    若要指定在按键(如 Enter 或 Tab)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码:   键 代码 Backspace {BACKSPACE}.{BS} 或 {BKSP} B ...

  10. tcp-ip-状态详解(转)

    TCP正常建立和关闭的状态变化     TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手.   建立连接   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建 ...