这不是我第一次遇到代表而且我和上一次以及之前的时间一样困惑.因此,我一劳永逸地想要彻底清除delgate混乱.
我的问题如下
有一个图形用户界面只显示带有一些boud项目的ListView,我想从数据连接加载数据,这需要一些时间,以增加使用我已实现BackgroundWorker的应用程序的舒适度和doWork方法我想要获取数据并显示它.
这就是我想要的
现在这是Cross-Thread-Invoking,我想通过Delegates来解决这个问题.在本教程之后,我得到了一个有效的委托,但它没有解决问题,在我的委托中我无法更改我的ListView,它仍然说它在另一个线程上.
我想找到一个关于代表的Easy explenation以及如何使用它们来解决我的问题.另外,我应该考虑或设计不同的软件吗?
通常BackgroundWorker使用与UI线程通信ReportProgress.您可以在启动后台工作程序之前挂钩委托以接收这些进度事件,然后在UI线程上报告进度,您可以安全地更改您的进度ListView.
Windows窗体中的另一个替代方法是调用Control.Invoke或Control.BeginInvoke传入将更新UI的委托.该委托将在UI线程上执行.有关此示例,请参阅我的线程教程或Joe Albahari的.
在WPF中相当于Dispatcher- 再次,Invoke和BeginInvoke.您可以使用该Dispatcher属性访问调度程序以获取控件.