.net 更新调用UI函数DLL

.net 更新调用UI函数DLL,.net,dll,delegates,appdomain,.net,Dll,Delegates,Appdomain,我试图找出如何从正在执行某些任务的DLL更新UI 我不明白DLL怎么能知道UI的任何东西 希望更清楚地解释: 比如说task1、task2和UI。 task1和task2都是DLL,对UI一无所知。 如何告诉DLL调用UI中的某些函数 希望我足够清楚,我对C#的了解远远不是我想要的 提前谢谢 PS希望不要让事情变得更糟这两个任务都有自己的appDomain您不告诉他们更新UI,您会引发一个事件,表明发生了变化,这可能很有趣-然后让UI在您的实例上订阅该事件,并相应地更新UI 因此,假设您希望在类

我试图找出如何从正在执行某些任务的DLL更新UI

我不明白DLL怎么能知道UI的任何东西

希望更清楚地解释:

比如说task1、task2和UI。
task1和task2都是DLL,对UI一无所知。
如何告诉DLL调用UI中的某些函数

希望我足够清楚,我对C#的了解远远不是我想要的

提前谢谢


PS希望不要让事情变得更糟这两个任务都有自己的appDomain

您不告诉他们更新UI,您会引发一个事件,表明发生了变化,这可能很有趣-然后让UI在您的实例上订阅该事件,并相应地更新UI

因此,假设您希望在类的任何属性发生更改时引发一个事件(方便的是,有
INotifyPropertyChanged
接口甚至描述了您将要这样做,并且很多事情都会“注意”和“做正确的事”,例如
BindingList

因此,您声明您的类具有以下属性:

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);

Winform、wpf、您尝试过的代码,我们需要更多的细节:)您能详细介绍一下如何做到这一点吗?或者在哪里可以找到关于这个的更多信息?@John任何特定的语言?@John我不确定是否有英语->IL编译器:)@John语法在VB.Net中稍微简单一些,但我已经添加了各种应该工作的位…可以传递参数吗?