Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Delegate asynchrone - Mise à jour progress bar

3 réponses
Avatar
teetof
Bonjour je d=E9couvre depuis peu l'interet des delegates et leur
fontctionnement en asynchrone
En r=E9sum=E9... : j'ai une solution sous VS2008 avec 2 projets
distincts ; un projet g=E9rant l'UI et l'autre la couche DAL .
Dans UI jai une form et sur cette derniere lorsque l'utilisateur
clique sur un bouton, il d=E9clenche une succession de scripts SQL
(stock=E9s dans un fichier) . Je laisse g=E9rer l'execution de ces scripts
par la DAL (qui ne ref=E9rence pas du tout mon projet UI). Sch=E9ma :

UI
onclick : ExecuteTraitementBDD () --------------> le traitement peut
etre long...

DAL:
ExecuteTraitementBDD :
--- traitement 1
... traitement 2...
et..(la boucle sur les scripts..)
pour chaque scriptsql faire :
ExecSQL(scripti)
FinExecuteTraitementBDD

Je souhaiterai que dans ma form UI ,faire progresser ma "progressbar"
apr=E9s chaque ExecSQL(script). J'ai donc commenc=E9 =E0 coder un d=E9l=E9g=
u=E9
cot=E9 UI en asynchrone (avec une fonction de callback qui mettait =E0
jour ma progress bar). Le d=E9l=E9gu=E9 d=E9clenchait donc
ExecuteTraitementBDD. Mais cela ne fonctionne pas puisque le callback
est uniquement appel=E9 =E0 la fin de ExecuteTraitementBDD (ce qui est
logique).
- Comment faire pour maj ma progressbar =E0 chaque it=E9ration de la
boucle , =E0 l'interieur de ExecuteTraitementBDD ?
Je pr=E9cise que je ne peux bien sur pas "d=E9porter" tout le code de
ExecuteTraitement dans l'UI pour d=E9clencher le d=E9l=E9gu=E9 uniquement s=
ur
ExecSQL... (vous me suivez ?) car traitement1 et traitement2 font
aussi appel =E0 d'autre code de la DAL.
Bref ..je tourne un peu en rond.
Si qqun peu m'aiguiller j'en serai reconnaissant

Merci

3 réponses

Avatar
Jérémy Jeanson
Bonjour Teetof,

Je pense que le BackGroundWorker peut être très pratique dans ton cas.
Voici le lien vers la doc :
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker_methods.aspx

Tu pourrais très bien envisager de la passer comme argument de ta
méthode d'appel de ta DAL et le piloter via celle-ci. Le
BackGroundWorker étant très facile à mettre en place je pense que tu y
gagneras pas mal de temps et ceux sans alourdir ta couche d'accès au
données.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
teetof
On 27 avr, 08:21, Jérémy Jeanson wrote:
Bonjour Teetof,

Je pense que le BackGroundWorker peut être très pratique dans ton cas .
Voici le lien vers la doc :http://msdn.microsoft.com/en-us/library/system .componentmodel.backgro...

Tu pourrais très bien envisager de la passer comme argument de ta
méthode d'appel de taDALet le piloter via celle-ci. Le
BackGroundWorker étant très facile à mettre en place je pense que t u y
gagneras pas mal de temps et ceux sans alourdir ta couche d'accès au
données.
--
Jérémy JEANSON
MCPhttp://www.jjeanson.fr



Bonjour ,
merçi bcp pour cet "aiguillage", je ne connaissais pas cette classe
trés pratique !
J'ai résolu mon soucis.
Encore une fois, avant de coder, bien regarder dans le framework ;)
Cdt;
Avatar
Richard Clark
Je te conseille de jeter un coup d'oeil sur les webcasts d'Eric Vernier. Le
backgroundworker est expliqué mais aussi plein d'autres choses tres
intéressantes :
http://msdn.microsoft.com/fr-fr/vcsharp/dd582579.aspx

Richard Clark
http://www.c2i.fr
Le 1er site .NET Francophone

a écrit dans le message de
news:
On 27 avr, 08:21, Jérémy Jeanson wrote:
Bonjour Teetof,

Je pense que le BackGroundWorker peut être très pratique dans ton cas.
Voici le lien vers la doc
:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgro...

Tu pourrais très bien envisager de la passer comme argument de ta
méthode d'appel de taDALet le piloter via celle-ci. Le
BackGroundWorker étant très facile à mettre en place je pense que tu y
gagneras pas mal de temps et ceux sans alourdir ta couche d'accès au
données.
--
Jérémy JEANSON
MCPhttp://www.jjeanson.fr



Bonjour ,
merçi bcp pour cet "aiguillage", je ne connaissais pas cette classe
trés pratique !
J'ai résolu mon soucis.
Encore une fois, avant de coder, bien regarder dans le framework ;)
Cdt;