延寿县建设银行网站,我想做个网站要多少钱,合肥网页制作联系方式,深圳市有方科技有限公司BackgroundWorker 控件的几个实例#xff08;C# backgroundworker使用方法#xff09;#xff1a; 
在 WinForms 中#xff0c;有时要执行耗时的操作#xff0c;在该操作未完成之前操作用户界面#xff0c;会导致用户界面停止响应。 解决的方法就是新开一个线程#xff…BackgroundWorker 控件的几个实例C# backgroundworker使用方法 
在 WinForms 中有时要执行耗时的操作在该操作未完成之前操作用户界面会导致用户界面停止响应。 解决的方法就是新开一个线程把耗时的操作放到线程中执行这样就可以在用户界面上进行其它操作。 新建线程可以用 Thread 类可以实现多线程同时操作简单的可以通过 BackgroundWorker 类实现。 
用 BackgroundWorker 类执行耗时的操作 BackgroundWorker 类在 System.ComponentModel 命名空间下。 VS 的工具箱时有一个 BackgroundWorker 组件就是这个类。 
常用方法 1.RunWorkerAsync 开始执行后台操作。引发 DoWork 事件 
2.CancelAsync 请求取消挂起的后台操作。 注意这个方法是将 CancellationPending 属性设置为 true并不会终止后台操作。在后台操作中要检查 CancellationPending 属性来决定是否要继续执行耗时的操作。 
3.ReportProgress 引发 ProgressChanged 事件。 
常用属性 1.CancellationPending 指示应用程序是否已请求取消后台操作。 只读属性默认为 false当执行了 CancelAsync 方法后值为 true。 
2.WorkerSupportsCancellation 指示是否支持异步取消。要执行 CancelAsync 方法需要先设置该属性为 true。 
3.WorkerReportsProgress 指示是否能报告进度。要执行 ReportProgress 方法需要先设置该属性为 true。 
常用事件 1.DoWork 调用 RunWorkerAsync 方法时发生。 
2.RunWorkerCompleted 后台操作已完成、被取消或引发异常时发生。 
3.ProgressChanged 调用 ReportProgress 方法时发生。 
在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。 
如果想在 DoWork 事件处理程序中和用户界面的控件通信可在用 ReportProgress 方法。 ReportProgress(int percentProgress, object userState)可以传递一个对象。 
ProgressChanged 事件可以从参数 ProgressChangedEventArgs 类的 UserState 属性得到这个信息对象。 
简单的程序用 BackgroundWorker 比 Thread 方便Thread 中和用户界面上的控件通信比较麻烦需要用委托来调用控件的 Invoke 或 BeginInvoke 方法没有 BackgroundWorker 方便。 一个简单的刷网页流量的小工具代码 从工具栏拖一个BackgroundWorker控件设置其属性WorkerReportsProgress为true  要让worker开始工作执行如下代码 mBackgroundWorker.RunWorkerAsync(arg); 这里有重写如果不需要传递参数直接mBackgroundWorker.RunWorkerAsync();  编辑DoWork事件代码 e.Argument为mBackgroundWorker.RunWorkerAsync(arg);对应的参数 之所以使用进度条肯定是有循环的在循环中报告进度 worker.ReportProgress(i * 100 / totalNum, obj ); 其中第一个参数是当前进度的百分之多少obj为你要传递的UserState如果没有可以不要  编辑ProgressChanged事件代码 e.ProgressPercentage为进度的百分数e.UserState为刚才传递过来的object 在这个事件中可以调用ui的进度条和其他控件 mToolStripProgressBar.Value  e.ProgressPercentage;