时至今日才知道,控件这东西,那个线程创建了它那它就属于这个线程了,其他线程想调用就得委托创建它的那个线程来办事。
平时窗体中拖进去的控件都会注意,在子线程中调用时要委托窗体,但是今天的情况就差点没想明白怎么回事,实在愚。。
做了个自定义控件,命名为 MyControl
然后在另一个类中用一个子线程初始化了一下
public class ControlHelper
{
public MyControl mycontrol;
public ControlHelper()
{
Task.Factory.StartNew(() =>
{
mycontrol = new MyControl();
}).Wait();
}
}
结果在主窗体里就出错了,找了半天还没找到原因
ControlHelper ch = new ControlHelper();
this.Controls.Add(ch.mycontrol);
对控件的理解更进了一步。
然并卵