c# backgroundworker 与invoke

1.BackgroundWorker b = new BackgroundWorker();
b.WorkerReportsProgress = true;
b.ProgressChanged += new ProgressChangedEventHandler(UpdateProcess);
b.DoWork += new DoWorkEventHandler(DoBuild1);
if (b.IsBusy != true)
{
b.RunWorkerAsync();
}

2.this.Invoke((EventHandler)(delegate
{
outputListbox(SrcMagName + SrcSlotName + "--" + DstMagName + DstSlotName + "-ok");

toolStripStatusLabel1.Text = SrcMagName + SrcSlotName + "--" + DstMagName + DstSlotName + "-ok";
}));

时间: 2024-10-24 10:49:10

c# backgroundworker 与invoke的相关文章

BackgroundWorker与线程使用

在一个程序中,一些耗时的操作,在长时间运行时可能会导致用户界面 (UI) 处于停止响应状态,用户在这操作期间无法进行其他的操作,为了不使UI层处于停止响应状态,需要将这些耗时的操作,设置为后台线程,并且在UI层可以展示后台操作的进度,比较常用的方法有使用线程以及BackgroundWorker类. 1.线程方法 当我们要在前太展示后台的操作进程时,是不允许跨线程访问控件.此时需要取消控件的跨线程访问,在winform中可以设置CheckForIllegalCrossThreadCalls = f

简单多线程BackgroundWorker

BackgroundWorker是·net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作.在开发多线程程序时,有些时候仅仅只是想实现一个简单的多线程,并不需要写一大堆的委托.回调等等,那么BackgroundWorker便是最好的选择.本Demo演示BackgroundWorker在WPF中的简单线程例子! ---------------------------------------------------------------------XAML代码--------

BackgroundWorker 后台进程控制窗体label、richtextbook内容刷新

昨天写了一个从文章中提取关键词的程序,写完处理的逻辑后又花了好几个小时在用户友好性上.加了几个progressBar,有显示总进度的.有显示分布进度的..因为程序要跑好几个小时才能执行好,只加个总进度的话感觉不太明显.一个label,显示当先操作的具体内容,还有个richtextbox显示出所有操作哦.. 直接扔代码咯,接好: 1 this.Invoke(new MethodInvoker(delegate() { label1.Text = "正在处理... "; label1.Re

使用BackgroundWorker

1,WPF应用程序为单线程模型(STAThread),所有UI控件都是主线程创建的,只有主线程能操作UI元素的显示. 2,其他工作线程要维护UI控件的显示,需调用主线程的Dispather,执行Invoke(同步)或BeginInvoke(异步)方法. 3,UI线程如时行耗时的操作,将使UI假死,用户体验较差.应使用后台线程进行耗时操作,并异步更新UI. 4,BackgroundWorker是WPF的一个后台工作类,代码说明一切: 前台: <StackPanel> <ProgressBa

深入剖析BackgroundWorker类

BackgroundWorker是一个在System.ComponentModel命名空间下的帮助类,用于管理工作线程.它提供了以下几个重要的特性: 1)“cancel”标记,可以在不使用Abort的情况下给工作线程打信号终止工作线程(调用CancelAsync方法). 2)提供报告进度.完成度和退出的标准方案 3)实现了IComponet接口,允许它参与Visual Studio设计器:可以直接从工具箱中拖出而不必写代码进行实例化 4)在工作线程上做异常处理 5)更新Windows Forms

C# backgroundworker使用方法

# BackgroundWorker 控件的几个实例(C# backgroundworker使用方法): 在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面停止响应.解决的方法就是新开一个线程,把耗时的操作放到线程中执行,这样就可以在用户界面上进行其它操作.新建线程可以用 Thread 类,可以实现多线程同时操作,简单的可以通过 BackgroundWorker 类实现. 用 BackgroundWorker 类执行耗时的操作BackgroundWor

(转载)BackgroundWorker创建多个线程

原文链接:http://www.jb51.net/article/34804.htm BackgroundWorker是一个非常不错的线程控件,能避免界面假死,让线程操作你想要做的事,它学习起来很简单,但是能实现很强大的功能.发布这篇文章的目的是将最近学习到的共享出来,大家交流一下,当然我也是菜鸟,在这里你将学习到BackgroundWorker简单使用,停止,暂停,继续等操作,BackgroundWorker比起Thread和ThreadPool要简单太多,为了更方便在实际应用中使用,我使用的

WPF 利用BackgroundWorker 动态加载UI

BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (ee, se) => { //TODO 需要异步请求的操作 }; bw.RunWorkerCompleted += (ew, sw) => { Dispatcher.Invoke(new Action(() => { <span style="white-space:pre"> </span>//TODO 动态生成UI }))

BackgroundWorker用法

BackgroundWorker主要用来提供后台运算服务(防止用户前台无响应等待),并提供服务进度的类: 代码如下: 1 BackgroundWorker bgw = new BackgroundWorker(); 2 bgw.DoWork += bgw_DoWork; 3 bgw.RunWorkerAsync(); 4 bgw.RunWorkerCompleted += bgw_RunWorkerCompleted; 5 //创建对象 6 7 void bgw_RunWorkerComplet