Bonjour,

J'ai actuellement un user control qui contient un datagridview.
Au moment du chargement de user control, une requete est lancé pour alimenter le datagridview, cette requête est assez longue puisqu'au niveau de l'affichage il y a un problème de rafraichissement.

Donc je suis passer par un thread pour exécuter a part la fonction qui alimente le datagridview.

Voici le code

Au chargement du user control je lance le thread qui va alimenter mon datagridview :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
private void SuiviDevis_Load(object sender, EventArgs e)
        {
            if (!DesignMode)
            {
                System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(Process));
                thread.Start();
            }
        }
Voici la fonction process :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 public delegate void InitialisationHandler(); //Mon type de delegate
public static InitialisationHandler initialisation; 
 
public void Process() 
{
   initialisation = new InitialisationHandler(RechargeListeSuivi);
   System.Threading.Thread.Sleep(500);
 
   IAsyncResult res = this.BeginInvoke(initialisation);
 
    this.EndInvoke(res);
}
Je ne met pas le code de la fonction RechargeListeSuivi car c'est une grosse requête sur le serveur SQL.

En faisant tout sa, je n'ai plus de problème d'affichage, mon datagridview apparait et s'alimente dès que le thread a terminé de travailler.

Sachant que c'est un peu long je voulais afficher un message dans le style "Veuillez patienter chargement en cours..." avec une progress bar qui avance.

Mais je ne vois pas comment mettre le message et si il faut que je l'appel dans un autre thread.
J'ai essayé en appelant une form mais celle-ci ne sa rafraichit pas...

Pourriez vous m'aider ?

Merci