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

cs_MobyWan 12 Messages postés mercredi 17 octobre 2007Date d'inscription 4 septembre 2010 Dernière intervention - 11 nov. 2007 à 17:35 - Dernière réponse : cs_MobyWan 12 Messages postés mercredi 17 octobre 2007Date d'inscription 4 septembre 2010 Dernière intervention
- 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 

5 réponses

Répondre au sujet
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 11 nov. 2007 à 20:33
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_niky
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 12 nov. 2007 à 08:10
0
Utile
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 12 nov. 2007 à 10:16
0
Utile
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
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 12 nov. 2007 à 18:23
0
Utile
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
cs_MobyWan 12 Messages postés mercredi 17 octobre 2007Date d'inscription 4 septembre 2010 Dernière intervention - 12 nov. 2007 à 21:31
0
Utile
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.