OVH Cloud OVH Cloud

application.Doevents pas bien ?

3 réponses
Avatar
AlexC
Bonjour,

Une question qui relate des performances, d'une application.
Dans mes boucles, si celle-ci ne font pas partie d'un thread autre que le
thread principal de l'application,
je lui colle un Application.Doevents pour éviter de "geler" mon appli.
Mais il me semble avoir lu quelquepart que cette méthode était très
pénalisante en termes de performances.
Est-ce réellement le cas ?
Si oui, par quoi le remplacer ?

Merci d'avance pour vos réponses.

AlexC

3 réponses

Avatar
David Bouchard
Est-ce que tu as essayer de passé tes boucles par un autre thread ou il
n'est vraiment nécessaire de passé par le principal parce que sinon, tu
pourrais faire ceci

dim Thread as new threading.thread(addressof MaBoucle)
thread.start

MaBoucle serait une procédure qui effectue ta boucle


David


"AlexC" <(@Anti-Spam)#(@Anti-Spam)#> a écrit
dans le message de news:
Bonjour,

Une question qui relate des performances, d'une application.
Dans mes boucles, si celle-ci ne font pas partie d'un thread autre que le
thread principal de l'application,
je lui colle un Application.Doevents pour éviter de "geler" mon appli.
Mais il me semble avoir lu quelquepart que cette méthode était très
pénalisante en termes de performances.
Est-ce réellement le cas ?
Si oui, par quoi le remplacer ?

Merci d'avance pour vos réponses.

AlexC



Avatar
AlexC
Certes mais faire de cette facon ne permet pas de passer des parametres à
mon thread.
Si? parce que j'ai déjà essayé une telle méthode dans un de mes programmes
et le thread ne voulais pas
de parametres.
De plus l'une de mes "boucles" possède un rafraichissement d'un progressbar
et il me semble que sans le Doevents
meme sur un thread séparé, la fenetre qui contient de progresse bar est
gelée.

"David Bouchard" a écrit dans le message de news:

Est-ce que tu as essayer de passé tes boucles par un autre thread ou il
n'est vraiment nécessaire de passé par le principal parce que sinon, tu
pourrais faire ceci

dim Thread as new threading.thread(addressof MaBoucle)
thread.start

MaBoucle serait une procédure qui effectue ta boucle


David


"AlexC" <(@Anti-Spam)#(@Anti-Spam)#> a écrit
dans le message de news:
Bonjour,

Une question qui relate des performances, d'une application.
Dans mes boucles, si celle-ci ne font pas partie d'un thread autre que le
thread principal de l'application,
je lui colle un Application.Doevents pour éviter de "geler" mon appli.
Mais il me semble avoir lu quelquepart que cette méthode était très
pénalisante en termes de performances.
Est-ce réellement le cas ?
Si oui, par quoi le remplacer ?

Merci d'avance pour vos réponses.

AlexC







Avatar
David Bouchard
En faite, tu as raison, on ne peut pas passer de paramètre à même la
fonction appeler par le nouveau thread mais voici de qu'elle façon tu peux
passé ta valeur

Private thread As Threading.Thread

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

thread = New Threading.Thread(AddressOf OtherThread)

thread.Start()

End Sub

Public Sub OtherThread()

Compter(3)

End Sub



Public Sub Compter(ByVal Nombre As Integer)

Dim Valeur As Integer

Do

Valeur = Valeur + Nombre

Me.Text = Valeur

Loop

End Sub

Protected Overrides Sub OnClosing(ByVal e As
System.ComponentModel.CancelEventArgs)

thread.Abort()

thread.Join()

End Sub



David

"AlexC" <(@Anti-Spam)#(@Anti-Spam)#> a écrit
dans le message de news:
Certes mais faire de cette facon ne permet pas de passer des parametres à
mon thread.
Si? parce que j'ai déjà essayé une telle méthode dans un de mes programmes
et le thread ne voulais pas
de parametres.
De plus l'une de mes "boucles" possède un rafraichissement d'un
progressbar et il me semble que sans le Doevents
meme sur un thread séparé, la fenetre qui contient de progresse bar est
gelée.

"David Bouchard" a écrit dans le message de
news:
Est-ce que tu as essayer de passé tes boucles par un autre thread ou il
n'est vraiment nécessaire de passé par le principal parce que sinon, tu
pourrais faire ceci

dim Thread as new threading.thread(addressof MaBoucle)
thread.start

MaBoucle serait une procédure qui effectue ta boucle


David


"AlexC" <(@Anti-Spam)#(@Anti-Spam)#> a écrit
dans le message de news:
Bonjour,

Une question qui relate des performances, d'une application.
Dans mes boucles, si celle-ci ne font pas partie d'un thread autre que
le thread principal de l'application,
je lui colle un Application.Doevents pour éviter de "geler" mon appli.
Mais il me semble avoir lu quelquepart que cette méthode était très
pénalisante en termes de performances.
Est-ce réellement le cas ?
Si oui, par quoi le remplacer ?

Merci d'avance pour vos réponses.

AlexC