Salut
comment je peux réaliser une fenetre que le traitement d'une requete est en cours d'éxécution et ça lui montre la progression sur une barre puis elle se ferme quand le traitement est fini.
merci








Salut
comment je peux réaliser une fenetre que le traitement d'une requete est en cours d'éxécution et ça lui montre la progression sur une barre puis elle se ferme quand le traitement est fini.
merci








si par exemple je veux que lorsque le traitement d'une requete sql est en cours par exemple , j'ouvre le BackgroundWorker ??
je n'ai pas bien réussi à l'utiliser cette composante ,pourriez vous m'aider
Il suffit de mettre tout le code faisant le traitement dans l'évènement DoWord du backgroundworker ...








merci pour ta réponse , j'ai essayé ceci avec un petit exemple et ça a marché , mais pour mon cas j'ai eu une exception.
je m'explique ,en fait quand je clique sur un bouton il y'a un traitement lourd qui se fait (création de table,mise à jour des structures de table) et ceci à travers divers fonctions.
J'ai placé ceci dans le do work mais il me génére une exception dans une des méthodes , qui me dit que l'élement (combobox) est déja utilisé par un autre thread .
J'ai pas su comment m'y faire ??
Tu n'as pas le droit d'accéder à un élément de l'interface en dehors du thread appelant. La solution c'est d'utiliser la méthode Invoke de la form parente (ou du contrôle) ce qui donne :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Traitement ... this.Invoke(new MethodInvoker(delegate{ Accès à un élément de l'interface })); Suite du traitement ...








je travaille sous vb.net , mais je n'ai pas bien compri la démarche que tu m'a proposé.
merci
Raa zut, c'était du vb ...
Regarde ici : http://msdn.microsoft.com/fr-fr/library/ms171728.aspx








j'ai fais ceci mais je n'arrive pas à faire fonctionner ce que je veux.
en fait c'est que j'ai écrit comme code:
comme vous voyez dans la méthode travail ,il n'y a que des traitements pour création de table et autres , je ne sais pas comment je dois faire.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValider.Click frmWait.Show() frmWait.Label4.Text = "Wait please..." bg.RunWorkerAsync() End Sub Private Sub bg_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bg.DoWork travail() End Sub Private Sub travail() Dim cpt As Integer Dim x As New ArrayList Dim champ, type, ch, taille, measure As String x = GetTypeAndTailleAttributCoche() ch = "" measure = "" For cpt = 0 To x.Count - 3 Step 3 champ = x.Item(cpt).ToString type = x.Item(cpt + 1).ToString taille = x.Item(cpt + 2).ToString If ch = "" Then If taille = "" Then 'attribut qui n'a pa de taille max généralment pour type comme (int ,datetime...) A revoir ch = champ + " " + type Else ch = champ + " " + type + " " + taille ' a revoir et a remplacer par la taille réelle ( decimal ????) End If Else If taille = "" Then ch = ch + "," + champ + " " + type Else ch = ch + "," + champ + " " + type + " " + taille End If End If If measure = "" Then measure = champ Else measure = measure + "," + champ End If Next objFait.SetConn(strConDefaut) 'ajouter le test pour la verification si la table existe dans la base If objFait.ExistTable(baseDefaut, "Fact" & TextBox2.Text) = True Then 'MessageBox.Show("This Fact exists ,Please modify the name", "Fact", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.DefaultDesktopOnly, True) TextBox1.Focus() 'If r = Windows.Forms.DialogResult.Yes Then 'Ouvrir un form qui permet à l'utilisateur de consulter les informations concernant le fait et le modifier Else objFait.CreateTableFait(TextBox2.Text, ch) Newid = objFait.GetLastIdFact + 1 objFait.InsertIntoTableFact(Newid, TextBox2.Text & "_Key", measure, TextBox2.Text) ' Me.Hide() 'frmInfoSchema.Show() End If End Sub Private Sub bg_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bg.ProgressChanged 'MyProgressBarr.Value = e.ProgressPercentage frmWait.pb.Value = e.ProgressPercentage End Sub
Merci pour l'aide
Partager