我有一個表單,並沒有control.I試圖從數據庫中獲取控件,所以我的項目是慢我認爲我可以使用線程,但我得到一個錯誤。多線程錯誤
void Form_Load(object sender,EventArgs e)
{
SqlDataAdapter adap=new SqlDataAdapter("Select * from MyControls");
DataTable dt=new DataTable();
adap.Fiil(dt);
foreach(DataRow dr in dt.Rows)
{
ThreadStart ts=delegate{ Sample1(dr) };
Thread th=new Thread(ts);
th.start();
}
}
public void Sample1(DataRow dr)
{
this.Invoke(new AddControlsDelegate(AddControls),new object[] {dr });
}
public void AddControls(DataRow dr)
{
TextBox tx=new TextBox();
tx.Name=dr["Id"].ToString();
this.Controls.Add(tx);
}
public delegate void AddControlsDelegate(DataRow dr);
我試着用這個代碼。但它不work.It加入相同的控制時間兩次,3次,4次
哪裏是我的錯嗎? 感謝
它的工作非常感謝lot.But控制一定要來「ID」 asceding 有時它不來asceding – YardimaIhtiyaciOlan
也許你應該改變SQL和包括'ORDER BY Id' ... – Yahia
@YardimaIhtiyaciOlan:除了在SQL中排序時,不能控制線程實際執行的時間 - 順序不能保證,要實現這一點,您需要一種不同的方法。此外,您當前的代碼沒有多大意義 - 使用多線程的開銷並不值得您實際執行的操作。 – BrokenGlass