自己编写了一个dll文件
有个public 变量 Number
里面有方法循环读取外部数据来更新这个变量.
在我编写的程序里调用这个DLL变量的Number的时候也要写循环来时时读取更新值
我想是不是可以利用 委托 事件 把程序里的循环去掉.
DLL里的值更新的时候自动出发事件
程序里方法做操作.
------解决思路----------------------
貌似可行吧。DLL里发布一个事件,谁感兴趣就订阅呗。
实际上很多控件不也这么运行着嘛。控件先检查绑定的数据源是否实现了INotifyPropertyChange、INotifyCollectionChanged这样的接口(这个接口必须提供PropertyChanged这样的事件),有,老子就订阅这个接口的规范中规定的那些事件,比如CollectionChange, PropertChanged这样的事件,没有,老子就不管。订阅的情况下,控件绑定的数据源就算被别的渠道更新了,控件也能立即知道。所以在.net的控件体系里,一个控件去检查它绑定的数据源是否实现INotifyPropertyChange、ICollectionChanged,这个事件定好了的,是一种预先约定好的机制。扯远了。。。
------解决思路----------------------
dll 文件
public class Class1
{
public delegate void nText(string msg);
public event nText n_Text;
public Class1()
{
Thread thread = new Thread(new ThreadStart(to));
thread.Start();
}
private void to()
{
for (int i = 0; 1 < 100; i++)
{
if (n_Text != null)
{
n_Text(i.ToString());
}
}
}
}
form代码
private void Form1_Load(object sender, EventArgs e)
{
Class1 cs1 = new Class1();
cs1.n_Text += cs1_n_Text;
}
void cs1_n_Text(string msg)
{
this.Invoke((Action)delegate { textBox1.Text = msg + "\r\n"; });
}