您有一个从不同服务器获取订阅源(数据)的应用程序。您的应用程序正在为每个服务器维护多个线程(以获取订阅源)以及一个用于GUI的线程。 您的GUI在另一个线程中运行了三个进度条(每个服务器一个)。
如果CPU忙于获取Feed,每次从任何服务器收到Feed时,如何刷新进度条。
不允许更改体系结构或接口。 GUI线程不可用于服务器线程。
答案 0 :(得分:0)
严格地说,这些约束可以在ProgressBar.BindingContext上使用DataBinder并将其绑定到具有progress值的自定义类,此自定义类实现INotifyPropertyChanging接口。然后设置三个静态变量,每个变量对应您设置的每个数据绑定(每个进度条一个)。然后只是提供静态变量的值。
请参阅:http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanging.aspx
其他选项是使用委托,它不需要引用产生控件的线程,通常它们似乎是处理多线程和ui更新的首选方法(例如在vb.net中因为) :
protected delegate sub updateProgressdelegate(ByVal control As ProgressBar, byVal value as integer)
protected shared sub updateProgress(ByVal control As ProgressBar, byVal value as integer)
if(control.invokeRequired) then
control.invoke(new updateProgressDelegate(addressof updateprogress), control, value)
exit sub
end if
control.value = value
'these aren't really needed but some people like to do them...
control.invalidate()
control.refresh()
end sub
查看代理信息: http://msdn.microsoft.com/en-us/magazine/cc301810.aspx
此外,如果家庭作业然后只是用作业标记它,如果'考试学习'然后尝试标记,诚实得到你更多的答案。如果不是家庭作业问题,那么提供代码样本,也许不要像在家庭考试中那样格式化问题。