Exécuter une fonction sans attendre qu'elle se termine [Résolu]

Messages postés
12
Date d'inscription
mercredi 17 octobre 2007
Dernière intervention
4 septembre 2010
- 11 nov. 2007 à 17:35 - Dernière réponse :
Messages postés
12
Date d'inscription
mercredi 17 octobre 2007
Dernière intervention
4 septembre 2010
- 12 nov. 2007 à 21:31
Bonjour,

Je me demande si c'est possible en c#, au sein d'une méthode, d'en lancer une autre sans attendre qu'elle se finisse pour cloturer la méthode appelante. (Donc appelé une méthode X qui en appel un autre Y et X se termine immédiatement alors que Y continue son traitement). 

c'est pour utiliser dans un service qui rappatrie des données et je n'ai pas envie de devoir attendre la fin de l'écriture sur le disque car de nouveau paquets de données seront envoyer pendant ce temps là

j'aimerais aussi éviter de passer par un event mais si il n'y a pas d'autres solutions...

voila si quelqu'un a une idée, c'est assez pressé.

Merci d'avance!!!

MobyWan
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Dernière intervention
18 octobre 2008
- 11 nov. 2007 à 20:33
3
Merci
Salut,


La technique de base pour appeler une méthode de façon asynchrone est
de faire appel à un thread. Maintenant, ça me paraît un peu lourd pour
faire une écriture sur le disque.


Il faudrait que tu précises un peu comment tu fais cela actuellement
car il existe des fonctions asynchrones de lecture/écriture en C#.
Elles sont généralement préfixées par Begin (BeginRead, BeginWrite).


Si tu veux ne pas perdre de temps à faire des lectures/écritures sur le
disque, il y a un moyen très simple aussi : traiter les données en bloc
dans la mémoire (c'est à dire mettre en cache) et solliciter le disque
le moins possible.


Décris plus précisément ce que tu souhaites faire et ce seras plus simple de te guider.


Cordialement.

Merci cs_niky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_niky
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
- 12 nov. 2007 à 08:10
0
Merci
Hello,

Encore un détail, tu dis que tu veux éviter de passer par des events. En effet, il te faut l'éviter dans ton cas, car les events ne sont pas asynchrones. Ca ne te servirait donc strivtement à rien.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 12 nov. 2007 à 10:16
0
Merci
Sinon... il y a des sources là dessus sur csharpfr, dont celle-ci : http://www.csharpfr.com/codes/IMPLEMENTATION-PATTERN-ASYNCHRONOUS_41848.aspx

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
- 12 nov. 2007 à 18:23
0
Merci
Sinon le pool de threads du framework est assez simple à mettre en oeuvre, et fait pour ça.
Renseignes toi sur la méthode "ThreadPool.QueueUserWorkItem", elle devrait répondre à ton besoin.

Par contre attention à l'utilisation des threads, surtout si tu risque de te retrouver avec plusieurs threads manipulant une ressource commune (un fichier, un répertoire, etc.). Si tu es dans ce cas, j'aurai tendance moi aussi a te renvoyer sur la source de sebmafate (voir lien ci-dessus), même si tout de suite plus "lourd" a mettre en place.


Working as designed
www.nikoui.fr
Commenter la réponse de Nikoui
Messages postés
12
Date d'inscription
mercredi 17 octobre 2007
Dernière intervention
4 septembre 2010
- 12 nov. 2007 à 21:31
0
Merci
Merci je vais me renseigner sur les fonctions asynchrones de lecture/écriture.

je n'en avait pas entendu parlé.

Encore merci

MobyWan
Commenter la réponse de cs_MobyWan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.