cs_technicienne
Messages postés28Date d'inscriptionlundi 27 avril 2009StatutMembreDernière intervention25 mai 2010
-
11 juin 2009 à 17:03
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
18 juin 2009 à 10:56
salut tout le monde
veuillez corriger le code suivant car il donne une erreur lors de son execution et merci d'avance:
Code:
void
valider(){
if (textBox1.Text "" || textBox2.Text ""){
MessageBox.Show(
"vous avez oubliez de rentre un champs obligatoire",
"error champs!!!",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
errorProvider1.SetError(textBox1,
"oublie de champs");
errorProvider1.SetError(textBox2,
"oublie de champs");
textBox2.Clear();
textBox1.Clear();
textBox1.Focus();}
try{
sqlconnection.Open();}
catch{
MessageBox.Show(
"Failed to connect to data source");}
finally{
SqlCommand comm;
comm =
new
SqlCommand(
"select * from utilisateurs where login='" + textBox1.Text +
"' and pwd='" + textBox2.Text +
"'", sqlconnection);
comm.Parameters.Add(
"login", textBox1.Text);
comm.Parameters.Add(
"password", textBox2.Text);
comm.Connection = sqlconnection;
SqlDataReader rd;
try{
rd = comm.ExecuteReader();
if (rd.Read())
{
menu m =
new
menu();
this.Hide();
m.ShowDialog ();
this.Close();}}
catch (
Exception er){
MessageBox.Show(
this,
"Login ou Mot de passe invalide",
"",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
textBox1.Text = er.ToString();}}}
Thread t1 =
new
Thread(
new
ThreadStart(valider));
t1.Start(); }
L'ereur: Opération inter-threads non valide : le contrôle 'connexion' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 11 juin 2009 à 17:25
"veuillez corriger le code suivant"
Tu voulais surement dire :
"Pourriez-vous, s'il vous plaît, m'aider à trouver la raison pour laquelle l'exception est levée dans ce bout de code ?"
On t'aurait répondu :
"Bien volontiers. Il se trouve que créer un objet connexion directement dans le nouveau thread devrait probablement t'éviter de rencontrer cette erreur. Bonne fin de journée à toi !"
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
cs_technicienne
Messages postés28Date d'inscriptionlundi 27 avril 2009StatutMembreDernière intervention25 mai 2010 12 juin 2009 à 11:07
je vous remercie pour votre aide.
J'ai lu cette article et je veux votre opinion sur ce que j'ai compris
dnc il faut insérer delegate et utiliser invoke.
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 12 juin 2009 à 18:49
Bonsoir
Oui c'est l'idée.
en fait une règle d'or:
Ne jamais, avec un grand J, acceder aux ressources graphiques d'une application depuis un thread parrallel.
pourquoi ?
Parceque seul le thread ayant créé les composants graphique est connecté à la pompe à message du systeme.
La solution:
Faire faire au thread possedant les objets graphiques les opérations necessaires, et cela s'appelle de la délegation par invocation.
On crée donc un delegate, dans le thread d'origine et on invoke son execution. le thread demandeur sera en quelque sorte suspendu jusqu'à la fin de l'execution.
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 17 juin 2009 à 21:41
bonsoir
dis-nous plus exactement ce qui ne va pas,
on ne peux sincerement pas compiler et executer tous les codes de tout le monde.
mais si tu précise ton problem, alors on essayera de t'aider, promis ;-)
cs_technicienne
Messages postés28Date d'inscriptionlundi 27 avril 2009StatutMembreDernière intervention25 mai 2010 18 juin 2009 à 09:57
salut
je vous remercie beaucoup pour votre aide et j'éspére que ça ne vous dérange pas.
this.Invoke(new
Validation (valide));
int count = (int)this.EndInvoke(ias);
MessageBox.Show(count.ToString());
this
.Invoke(newValidation (valide));} et voila l'erreur Error
No overload for 'valide' matches delegate 'gestion_facture.connexion.Validation' ..... 80 25 gestion_facture
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 18 juin 2009 à 10:56
Quand tu crées ton delegate "Validation", il doit avoir EXACTEMENT la même forme que valide();
exemple :
si valide a ce prototype : void valide();
alors Validation doit être comme ça : delegate void Validation();
si valide a ce prototype : int valide(MaClassePerso monObjet, string monTexte);
alors Validation doit être comme ça : delegate int Validation(MaClassePerso monObjet, string monTexte);
La SEULE chose qui peut changer, c'est l'accessibilité (public, private, protected, internal), en fonction de tes besoins.
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -