我试图找出如何从执行某项任务的DLL更新我的UI。
我无法弄清楚DLL如何知道UI的任何内容。
希望更清楚地解释一下:
我已经说过task1,task2和UI task1和task2都是DLL,并且不知道UI的任何内容 如何告诉DLL在UI中调用某些函数?
希望我足够清楚,我对C#的了解远远不是我想要的。
提前致谢。
PS希望不会让两个任务都变得更糟,有自己的appDomain的
答案 0 :(得分:2)
你没有告诉他们更新UI,你提出一个事件,表明某些事情发生了变化,这可能很有趣 - 然后让你在你的实例上订阅该事件,并相应地更新UI。
所以,假设您想要在类的任何属性发生更改时引发事件(方便地,有INotifyPropertyChanged
接口甚至描述您要执行此操作,以及很多事情将“注意”和“做正确的事”,例如BindingList<T>
)
因此,您声明您的类具有属性:
public event PropertyChangedEventHandler PropertyChanged;
然后,要举起活动,您只需致电:
if (PropertyChanged != null)
{
PropertyChangedEventArgs e = new PropertyChangedEventArgs(propertyName);
PropertyChanged(this, e);
}
要订阅活动(在您的客户端应用程序/ UI层中),就像让您的事件发送给我们一样简单:
protected void yourClass_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
// Update the UI -- might need to check whether you need too invoke, if you're multi-threaded
}
添加接线
YourClass foo = new YourClass();
foo.PropertyChanged += new PropertyChangedEventHandler(this.yourClass_PropertyChanged);