函数功能:给一个ComboBox赋值。
两个委托如下:
private delegate void SetCusDelegage(ComboBox cbo);
private delegate DataSet CusDelegage();
第一种情况:在Form线程外另一线程赋值。过程如下:
private void SetCustomers(ComboBox cbo)
        {
            StringBuilder sb = new StringBuilder("select * from customers");            SqlConnection con = new SqlConnection("data source=mypc;initial catalog=northwind;user id=sa;password=weblogic");
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter(sb.ToString(), con);
            DataSet ds = new DataSet("Northwind");
            sda.Fill(ds, "Customers");            cbo.DataSource = ds.Tables["Customers"].DefaultView;
            cbo.DisplayMember = "CustomerID";
        }
第二种情况:
private DataSet GetCustomers()
        {
            
            StringBuilder sb=new StringBuilder("select * from customers");
            SqlConnection con = new SqlConnection("data source=mypc;initial catalog=northwind;user id=sa;password=weblogic");
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter(sb.ToString(), con);
            DataSet ds = new DataSet("Northwind");
            sda.Fill(ds, "Customers");
            
            return (ds);
        }
调用第一种情况语句如下:
SetCusDelegage bd1 = new SetCusDelegage(SetCustomers);
IAsyncResult asRes1 = bd1.BeginInvoke(comboBox5, null, null);
调用第二种情况语句如下:CusDelegage bd1 = new CusDelegage(GetCustomers);
IAsyncResult asRes1 = bd1.BeginInvoke(comboBox5, null, null);
DataSet ds = bd1.EndInvoke(asRes1);
comboBox5.DataSource = ds.Tables["Customers"].DefaultView;
comboBox5.DisplayMember = "CustomerID";为什么后种方法可以,而前一种方法不行?郁闷当中!!!!!