Bonjour ,
J'ai un winform appelé login qui demande un nom d'utilisateur et un mot de passe, vérifie les informations avec une base de données (en ligne) et affiche ensuite le winform principal, mais pour éviter que l'application ne se fige, j'ai utilisé deux backgroundworkers.
Sur mon winform principal, j'ai plusieurs onglets pour changer de tableau.
quand je clique sur mon bouton de connexion:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
private  void btncon_Click(object sender, EventArgs e)
 {
    strLogin = tblogin.Text.Trim();
    pass = tbpwd.Text;
    if (!backgroundWorker1.IsBusy)
        backgroundWorker1.RunWorkerAsync();
 }
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            string[] user = cm.login(strLogin, pass);
            int dataload = 0;
            if(user[0] != null)
            {
               success = true;
            }
            else
            {
                success = false;
            }
        }
alors quand backgroundworker1 est fini, j'appelle backgroundWorker2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (success)
            {
                backgroundWorker2.RunWorkerAsync();
            }
            else
            {
                this.Show();
            }
        }
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
main Principale; //main form
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
  Principale = new main();
}
 
    private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
      this.Hide(); //hide login winform
      Principale.Show(); //show mainform
    }
le soucis il y a certains bugs que je ne comprend pas du tout et c'est peut être de la manière dont j'utilise les backgroundworker avec mon gui