cs_MobyWan
Messages postés12Date d'inscriptionmercredi 17 octobre 2007StatutMembreDernière intervention 4 septembre 2010
-
11 nov. 2007 à 17:35
cs_MobyWan
Messages postés12Date d'inscriptionmercredi 17 octobre 2007StatutMembreDerniè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é.
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 11 nov. 2007 à 20:33
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.
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 12 nov. 2007 à 08:10
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)
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 12 nov. 2007 à 18:23
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
Vous n’avez pas trouvé la réponse que vous recherchez ?