J'ai un formulaire et il n'y a aucun contrôle. J'essaie d'obtenir les contrôles de la base de données pour que mon projet soit lent je pense que je peux utiliser le filetage mais j'obtiens une erreur.Erreur de multithreading
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);
Je suis tryin avec ce code .Mais il DonT work.It ajoutant même temps le contrôle deux fois, 3 fois, 4 fois
Où est le mal mon? grâce
fonctionner Merci un lot.But contrôles doivent venir asceding « Id » parfois son est pas asceding – YardimaIhtiyaciOlan
peut-être vous devriez changer le SQL et comprennent une 'ORDER BY Id' ... – Yahia
@YardimaIhtiyaciOlan: En plus de la En ordonnant en SQL, il n'y a pas de contrôle sur le moment où les threads s'exécutent réellement - l'ordre n'est pas garanti, pour cela vous aurez besoin d'une approche différente. En outre, votre code actuel n'a pas beaucoup de sens - la surcharge de l'utilisation de plusieurs threads ne vaut pas la peine pour ce que vous faites réellement. – BrokenGlass