winform异步进度条LongTime
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的更多相关文章
- (四十一)c#Winform自定义控件-进度条
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (四十二)c#Winform自定义控件-进度条扩展
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- win10 uwp 异步进度条
本文主要讲我设计的几个进度条,还有如何使用异步控制进度条,如何使用动画做进度. 进度条可以参见:http://edi.wang/post/2016/2/25/windows-10-uwp-modal- ...
- 关于C# WinForm中进度条的实现方法
http://www.cnblogs.com/Sue_/articles/2024932.html 进度条是一个软件人性化考虑之一,他给用户的感觉就是程序内部在不停的动作,执行到了什么程度,而不是整个 ...
- (七)c#Winform自定义控件-进度条
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- C# winform带进度条的图片下载
代码如下: public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } private void ...
- c# 异步进度条组件BackgroundWorker
//控件事件调用DoWork()方法就行. #region 进度条 private BackgroundWorker worker = null; private void DoWork(string ...
- C#winform使用进度条
在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息 ...
- asp.net XMLHttpRequest 进度条以及lengthComputable always false的解决办法
一直用ajax好长时间了,对其原理也有一些了解,最近由于项目需要,使用ajax异步进度条的效果,就研究了一下,用原生的XMLHttpRequest实现进度条函数,XMLHttpRequest有以下函数 ...
随机推荐
- [转]StringUtils方法
摘自http://blog.sina.com.cn/s/blog_4550f3ca0100qrsd.html org.apache.commons.lang.StringUtils中方法的操作对象是j ...
- bzoj1803: Spoj1487 Query on a tree III
Description You are given a node-labeled rooted tree with n nodes. Define the query (x, k): Find the ...
- 有关JSP注释
最近学习过滤器的时候,dispatcher可以指定过滤器被Servlet容器拦截的方式,可以是REQUEST.INCLUDE.FORWARD.ERROR,默认是REQUEST方式. 现在有两个filt ...
- .NET常用方法——邮件发送
邮件发送类文件,可直接使用: 调用方法(实例化.静态调用): 实例化: string exception = ""; SendEmail.SendEmail SE = new Se ...
- 指定WebService访问的语言
场景: 在访问ERP发布的WebService时,由于其指定了访问语言,导致不指定访问语言时,会有部分数据丢失. 解决: 通过WSDL工具生成代理类后,再次对其中的GetWebRequest方法进行重 ...
- 像装软件一样装系统 Win8下怎么装Win7
像装软件一样装系统 Win8下怎么装Win7 首先,你需要一个Windows7的ISO镜像文件,非ghost版本 一般选中ISO文件,点反键在弹出菜单中以“装载”或“window资源管理器”方式打开 ...
- 安装配置Oracle数据库时的一些处理思路
配置Oralce客户端或者服务器端出现问题时,可考虑如下步骤: 1 检查如下文件:client端:D:\app\Administrator\product\11.2.0\client_3\networ ...
- 不用删除整个Maven本地库文件夹,Eclipse下直接更新Maven库
- linux下安装easy_install的方法
python中的easy_install工具,类似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan,那是相当的爽歪歪了如果想使用 如果想使用easy_install工具,可能需要 ...
- View的缩放操作--CGAffineTransformMakeScale:
__weak UIImageView *weekImage = imageView; imageView.transform = CGAffineTransformMakeScale(0.1, 0.1 ...