前面 我们有说到 多线程给窗体的控件赋值
详见
遇到问题-UI界面无响应,多线程解决UI界面无响应问题
现在有一种新的情况, 我想在 另一个类中 给窗体的控件赋值(这在记录程序执行进度的时候常用到),我们仍可以用委托
首先在 自定义类 的外面 声明一个 委托模块
public delegate void setStatusDelegate(int iteration);
接着在类中
public static setStatusDelegate setStatusDelegate;
然后在其他函数中调用它
if (DataBaseHandler.setStatusDelegate != null)
{
DataBaseHandler.setStatusDelegate(n);
}
最后 我们还要在窗体函数中做相应的赋值处理
public Form1()
{
DataBaseHandler.setStatusDelegate = new setStatusDelegate((i) =>
{
this.Invoke(new setStatusDelegate((count) =>
{
this.labe1.Text ="已上传:" +count.ToString();
}), i);
});
}