Bonjour,

Je travaille sous Visual Studio 2010, jj'ai une application C# dans laquelle j'ai un datagridview qui contient diverses données. Les données sont récupérer sur un serveur SQL 2005 par requête.
L’exécution des requête est traiter dans un thread a part car le traitement peut être long et pendant le traitement j'affiche une petite fenêtre de chargement pour l'utilisateur.
Dès que les données sont chargé, la fenêtre de chargement se ferme et mon datagridview contient toutes les données.
Jusqu'à la tout fonctionne bien sous Visual Studio.
Mais lorsque je veux exécuter mon exe dans le répertoire MonProjet\bin\Debug\monprrojet.exe, le chargement de mon datagridview fonctionne bien mais la scrollbar vertical disparait.
Je ne comprend pas pourquoi elle disparait pas sous Visual Studio quand je compile.
J'ai vu que si j'enlevai mon thread pour le chargement ddes requetes, la scrollbar reste bien affiché aussi bien sous Visual Studio que lorsque je lance mon exe dans le répertoire Debug.

J'ai beau faire des refresh après le traitement du thread mais rien ni fait.
Je vous joins mon code:

Fonction qui initialise et appel le thread pour le traitement des requêtes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Utils.Composants.AttenteReq aReq = new Utils.Composants.AttenteReq();
 
Utils.Composants.ThreadHandler thh = null;
 
if (!isRecherche)
      thh = new Utils.Composants.ThreadHandler(aReq, new Utils.Composants.ThreadHandler.DelegateMethode(ExecuteRequete));
else
       thh = new Utils.Composants.ThreadHandler(aReq, new Utils.Composants.ThreadHandler.DelegateMethode(Recherche));
 
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(thh.DoWork));
 
thread.Start();
 
aReq.ShowDialog();
aReq.Dispose();
aReq = null;
LA fonction DoWork de la classe ThreadHandler :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
public delegate void DelegateMethode();
private DelegateMethode _fonction;
 
public void DoWork()
{
     _fonction.Invoke();
     Termine();
}
La fonctione Termine() :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public delegate void FermeFenetreHandler();
public FermeFenetreHandler fermeFenetre;
 
private void Termine()
{
     this.fermeFenetre = new FermeFenetreHandler(FermeFenetre);
     this.waitForm.Invoke(fermeFenetre);
}
 
public void FermeFenetre()
{
      this.waitForm.Close();
}
Merci pour votre aide

Cordialement