begin process at 2010 02 09 21:06:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Autre

 > 

exécuter une fonction sans attendre qu'elle se termine


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

exécuter une fonction sans attendre qu'elle se termine

dimanche 11 novembre 2007 à 17:35:36 | exécuter une fonction sans attendre qu'elle se termine

MobyWan

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

dimanche 11 novembre 2007 à 20:33:30 | Re : exécuter une fonction sans attendre qu'elle se termine

niky

Membre Club
Réponse acceptée !
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.
lundi 12 novembre 2007 à 08:10:43 | Re : exécuter une fonction sans attendre qu'elle se termine

SharpMao

Membre Club
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)
lundi 12 novembre 2007 à 10:16:17 | Re : exécuter une fonction sans attendre qu'elle se termine

sebmafate

Membre Club Administrateur CodeS-SourceS
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]
lundi 12 novembre 2007 à 18:23:28 | Re : exécuter une fonction sans attendre qu'elle se termine

Nikoui

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
lundi 12 novembre 2007 à 21:31:54 | Re : exécuter une fonction sans attendre qu'elle se termine

MobyWan

Merci je vais me renseigner sur les fonctions asynchrones de lecture/écriture.

je n'en avait pas entendu parlé.

Encore merci

MobyWan



Cette discussion est classée dans : fonction, exécuter, méthode, attendre, termine


Répondre à ce message

Sujets en rapport avec ce message

Exécuter une fonction dans le serveur [ par chafaqis ] salut tt le mondej'ai une application WindowsForms en C#,j'ai une fonction que je veux l'executer dans le serveur. est ce que quelqu'un a une idée sur Exécution sous Thread spécifique [ par thegitch ] Bonjour à tous,Comment, depuis un thread B, exécuter une méthode sous un thread A ? Je m'explique.Le thread A est le thread principal, le main, le thr Export un DataGridView vers excel le plus rapidement possible. [ par forme123 ] Bonjour à tous,Je cherche une méthode rapide pour faire un export de données d'un datagridview comportent 10 colonnes et plus de 100000 lignes vers un désactiver un bouton de validation en fonction des champs obligatoires [ par Kpris ] Bonjour j'essaie de faire un usercontrol qui me permettra de désactiver(butonOK_Click.Enabled = false;) un bouton de validation (du genre un bouton OK Comment lier un ArrayList de control perso avec un TreeView avec la fonction Binding ? [ par Morgan_2956 ] <span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 11px 'Lucida Grande'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; LETTER pbm de demarrage d'un service windows [ par lidybekham07 ] sltj'ai un service windows  quand je le lance avec la méthode start du controlleur le statut ne change pas rapidement donc au départ j'utilisé la méth Récupération du Son enregistré par microphone [ par Fabster76 ] Bonjour à tous. Je débute dans la programmation en C# et je voudrais savoir comment je peux récupérer le son enregistré par mon micro, qui est intégré Accéder à une méthode qui se trouve dans une class externe. [ par kikiokiller ] Bonjour,J'ai une application client serveur qui tourne en socket asynchrone.La communication entre les deux fonctionnent bien.Mais je voudrai que mon Exécution d'une méthode en réseau local [ par kikiokiller ] Bonjour bonjour,Désolé d'etre insistant sur ce forum, mais voila 8 jours que je galère à comprendre quelque chose, qui parait peut etre simple pour ce Somme d une listbox [ par drime86 ] Bonjour à tous, voila mon problem , j'aimerai  calculer  la somme de la colonne  d' une  listbox  ma fonction :private <font


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales