在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
如果要解决以上的两个问题,那么可以借助C#中的Delegate和控件类中的Invoke()方法来搞定。 这里给出的例子比较简单,主要思路是:在Main()中启动其它的线程作为后台进程,其中一个线程是实时显示当前的时间,一个线程是显示一些随机数,这样一来三个线程同时运行,彼此通过代理来联系。 其实在C# 2.0 中所有的Control类都有Invoke()方法,如果负责更新UI元素的函数不是定义在Main()中,那么必须首先检测Control类中的InvokeRequired属性。举个例子吧,注意setProgressBarValue()函数中调用自己的方式. //在工作线程中更新主窗口进度条 public void setProgressBarValue(ProgressBar progressBar1,int value) { if (progressBar1.InvokeRequired) { object[] parameters = new object[] { value }; progressBar1.Invoke(new setProgressBarValueDelegate(setProgressBarValue), parameters); } else progressBar1.Value = value; } 这里的一些代码参考了http://www.codeproject.com 的例子. |
请发表评论