Label从另一个线程更新a的最简单方法是什么?
我有一Form对thread1,并从我开始另一个线程(thread2).虽然thread2在处理一些文件,我想更新Label在Form用的当前状态thread2的工作.
我怎样才能做到这一点?
我正在设计/重新编写应用程序的数据绑定部分,该应用程序大量使用来自后台线程的winforms数据绑定和更新(每秒一次> 100条记录).
让我们假设应用程序是一个股票交易应用程序,后台线程监视数据更改并将它们放到数据对象上.这些对象存储在一个BindingList<>并实现,INotifyPropertyChanged以通过数据绑定将更改传播到winforms控件.此外,数据对象当前正在通过WinformsSynchronizationContext.SendUI线程编组更改.用户可以在UI中输入一些值,这意味着可以从两侧更改某些值.并且更新不应该超出用户值.
所以我想到了几个问题:
用户界面实际上并不知道有一个后台线程,它会更新控件,而且根据我在数据绑定场景中的理解,用户界面不应该知道数据的来源......您可以将后台线程视为将数据推送到UI的东西,所以我不确定背景工作者是否是我正在搜索的选项.
有时您希望在数据/业务对象的操作期间获得一些UI响应(例如,在重新计算期间设置背景).在绑定到后台的状态属性上提升属性是不够的,因为控制在计算完成后重新绘制了?我的想法是挂钩propertychanged事件并在控件上调用.update()......还有其他想法吗?