BackgroundWorker实现的winfrom中实现异步等待加载图片显示

BackgroundWorker简介

   BackgroundWorker在winfrom中有对应控件,该有三个事件:DoWork 、ProgressChanged 和 RunWorkerCompleted。

在程序中调用RunWorkerAsync方法则会启动DoWork事件的事件处理,当在事件处理过程中,调用 ReportProgress方法则会启动ProgressChanged事件的事件处理,而当DoWork事件处理完成时,则会触发RunWorkerCompleted事件。您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象(否则仍会停止响应)。而应该通过 ProgressChanged和 RunWorkerCompleted 事件与用户界面进行通信。

实现waitefrom界面的窗体,改界面自己设计。

 1 /// <summary>
 2         /// 当辅助线程指示某些操作已经进行时引发
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
 7         {
 8             int progress = e.ProgressPercentage;
 9             this.progressBar1.Value = progress;
10             //label1.Content = string.Format("{0}", progress);
11         }
12
13         /// <summary>
14         /// 操作开始时在另一个线程上运行的事件处理程序
15         /// </summary>
16         /// <param name="sender"></param>
17         /// <param name="e"></param>
18         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
19         {
20
21         }
22
23         /// <summary>
24         /// 当辅助线程完成(无论是成功,失败或者取消)时引发
25         /// </summary>
26         /// <param name="sender"></param>
27         /// <param name="e"></param>
28         private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
29         {
30             this.DialogResult = DialogResult.OK;
31         }

调用waitefrom船体代码(DoWork事件不要重复使用)

 1  protected virtual void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
 2         {
 3             BackgroundWorker bw = sender as BackgroundWorker;
 4             for (int i = 0; i < 100; i++)
 5             {
 6                 System.Threading.Thread.Sleep(1000);
 7                 WaiteForm1 f = e.Argument as WaiteForm1;
 8                 f.bw.ReportProgress(i);
 9                 bw.ReportProgress(i);
10             }
11             object a = e.Argument;
12             object b = e.Cancel;
13             e.Result = "21";
14         }
15
16  private void button1_Click(object sender, EventArgs e)
17         {
18             WaiteForm1 wa = new WaiteForm1();
19
20             //执行DoWork事件可传入执行的参数
21             wa.bw.RunWorkerAsync(wa);
22
23             wa.bw.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
24             //wa.bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
25             wa.ShowDialog(this);
26             this.Text = "2132";
27         }

时间: 2024-11-05 16:34:33

BackgroundWorker实现的winfrom中实现异步等待加载图片显示的相关文章

异步线程加载图片工具类

/** * 异步线程加载图片工具类 * 使用说明: * BitmapManager bmpManager; * bmpManager = new BitmapManager(BitmapFactory.decodeResource(context.getResources(), R.drawable.loading)); * bmpManager.loadBitmap(imageURL, imageView); */ public class BitmapManager { private st

使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)

AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://www.cnblogs.com/zzw1994/p/4992194.html 具体实现的代码如下: item.xml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:and

阿冰教你一步一步做Android新闻客户端(二)两种异步线程加载图片的方法

哈哈哈抱着没人看的心态随便写,直接上代码,各位看官看注释 一种Thread  一种AsyncTask 先不说用框架 public class ImageLoader { private ImageView mImageView; private String mUrl; //Thread明显很low 还需要handler来传递消息,好累T T android.os.Handler mHandler = new android.os.Handler(){ @Override public void

Android之ListView异步加载图片且仅显示可见子项中的图片

折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整实例都没看到,只有自己一点点研究了,总体感觉 android 下面要显示个图片真不容易啊. 项目主要实现的功能: 异步加载图片图片内存缓存.异步磁盘文件缓存解决使用 viewHolder 后出现的图片错位问题优化列表滚动性能,仅显示可见子项中的图片无需固定图片显示高度,对高度进行缓存使列表滚动时不会

Swift - 异步加载图片

下面是一个异步请求加载图片数据的样例 1 2 3 4 5 6 7 8 9 10 11 //定义NSURL let imgURL:NSURL=NSURL(string:"http://hangge.com/blog/images/logo.png")! //定义NSURLRequest let request:NSURLRequest=NSURLRequest(URL:imgURL) //异步获取图片 NSURLConnection.sendAsynchronousRequest(req

安卓异步加载图片(缩略图显示)的实现

/** * 根据指定的图像路径和大小来获取缩略图 * 此方法有两点好处: * 1. 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度, * 第二次读取的bitmap是根据比例压缩过的图像,第三次读取的bitmap是所要的缩略图. * 2. 缩略图对于原图像来讲没有拉伸,这里使用了2.2版本的新工具ThumbnailUtils,使 * 用这个工具生成的图像不会被拉伸. * @param imagePath 图像的路径 * @param width 指定输出图像的

iOS UIAlertView中UIActivityindicatorView风火轮提示加载等待

参考:http://stackoverflow.com/questions/18729220/uialertview-addsubview-in-ios7 1.SignInViewController.h #import <UIKit/UIKit.h> @interface SignInViewController : UIViewController<UIAlertViewDelegate>{ UIAlertView *remoteAlertView; } @end 2.Sign

IOS中UITableView异步加载图片的实现

本文转载至 http://blog.csdn.net/enuola/article/details/8639404 最近做一个项目,需要用到UITableView异步加载图片的例子,看到网上有一个EGOImageView的很好的例子. 但是由于,EGOImageView的实现比较复杂,于是自己就动手做了一个AsynImageView,同样可以实现EGOImageView的效果. 而且自己写的代码比较清晰,容易理解,同样可以实现指定placehoderImage以及指定imageURL,来进行图片

Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案

Android中ListView异步加载图片错位.重复.闪烁问题分析及解决方案 我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如ListView上有100个Item,一屏只显示10个Item,我们知道getView()中convertView是用来复用View对象的,因为一个Item的对应一个View对象,而ImageView控件就是View对象通