[STAThread]
static void Main() 
{
Application.Run(new Form1());
} private delegate void deletest();
private void Form1_Load(object sender, System.EventArgs e)
{
deletest  dele = new deletest(call);
System.AsyncCallback callback = new AsyncCallback CallMainForm_CallBack);
dele.BeginInvoke(callback,null);
} private void call()
{
return;
} private void CallMainForm_CallBack(IAsyncResult ar)
{
tabControl1.Controls.Add(new TabPage("whs"));
}代码很断是测试用的,不知道为什么到掉到tabControl1.Controls.Add(new TabPage("whs"));的时候CallMainForm_CallBack方法又被调用一次,这样tabControl1中就加了两个TabPage.好像和控件有关都这样,好像和异步有关系,但不知道怎么解决?谢谢

解决方案 »

  1.   

    private void CallMainForm_CallBack(IAsyncResult ar)
    {
    tabControl1.Controls.Add(new TabPage("whs"));
                               //在这里加一个EndInvoke试试
    }
      

  2.   

    调用tabControl1.Controls.Add(new TabPage("whs"));异常是:
    "在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级。"
    但是我想用委托到主线程中做,可这时UI还没有SHOW出来,所有用this.Invoke()还是会异常。