假设有种情况,读取1000个文件,用进度条来显示读取的进度,这时如果要进度条正常滚动,而且要主界面不卡死,也就是说要把后台的事务处理(读取1000个文件)和界面的反应分开,这时就可以用多线程和delegate来处理。
首先,定义一个delegate,在主线程中也就是button的点击事件中新建一个子线程
Thread tr=new Thread(new ThreadStart(method));
tr.isbackgroundthread=true;
tr.start();
然后,在method的方法中也就是在读取文件的过程中应用delegate来触发界面进度条的更新
dele=new StartProgressEventHandle(StartProgress);
dele.invoke();
最后,在StartProgress的方法中更新进度条
StartProgress()
{
if(this.isactiverequired)
{
this.invoke(new StrartProgressEventHandle(StratProgress));
}
else
{
//更新进度条
}
}
分享到:
相关推荐
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....
Delegate '委托,带参数的方法,多线程,可以轻松在线程中传递参数,获取返回值.
(Swift)SceneDelegate中启动UI
使用delegate和Invoke,使用delegate和BeginInvoke,使用BackgroundWorker组件,使用SynchronizationContext组件
(OC)SceneDelegate中启动UI
一个简单的C#多线程和委托更新UI的demo
这是一个简单的VB.NET使用托管的多线程程序。防止界面假死。教你怎么使用Delegate来传递参数。 代码简单。 抛砖引玉。谢谢!
该文档给出了在不同线程间实时更新控件textbox数据的代码,利用了委托(delegate)
delegate和block的使用
swing框架之uidelegate之一.doc
多线程 进度条解决方案。 文本,非项目 .定义 委托 delegate void myDelegate(int i); myDelegate mydelegate = null; 2.定义方法,显示消息 public void ShowMessage(int i) { this.textBox1.Text = i....
一般在我们使用delegate都知道,是一对一的关系。在目前的项目中,有这样一个需求,在服务端收到了一个下发事件,需要在不同的页面,不同的VC都收到此事件,并进行相应的处理
ios applicationDelegate使用;ios applicationDelegate使用
子线程操作主线程控件,不卡顿,简易高效,代码人人看的懂
多播代理,block传值,属性传值
delegate与block的使用
多线程应该采用消息中心来交换数据,这样就规避了线程同步交互,等待,阻塞等等,全部是异步调用,全部是接收消息工作,然后产生消息,线程间没有耦合,消息中心有很多成熟的方案如RabbitMQ, Redis(里面有简单的...
对iOS的delegate代理方式不是很清楚的同学可以来看看,很简单的代码,看过之后应该给你有帮助
在.net中使用Delegate+线程,使用后台线程,在Web中使用线程加委托,在1秒钟定时操作某个方法