2010-11-29 6 views
3

Il y a une tâche très commune que je fais face encore. Je l'ai déjà résolu à quelques reprises, mais maintenant je suis à la recherche d'un plus "élégant" façon - pouvez-vous livrer une certaine entrée?Temporisation de tâche asynchrone?

Situation:
J'ai une méthode que je voudrais courir "semi async". En d'autres termes: Commencez et attendez un moment x. Si la méthode n'est pas terminée à ce moment-là ("expiré"), je veux continuer mon code avec quelques procédures de nettoyage.

Solutions écrit:

  1. utiliser un AutoResetEvent (ou ManualResetEvent) associé à un procédé de annonymus utilisant .WaitOne (x).
  2. Utilisez un thread/BackgroundWorker associé à un minuteur. Si le temporisateur atteint son gestionnaire avant que le thread ne l'arrête, le délai est expiré.

Les deux appraochs fonctionnent bien mais j'imagine qu'il existe un meilleur moyen avec 4.0.

Suggestions?

+0

duplication possible de [Attente asynchrone de la tâche pour terminer avec le délai] (http://stackoverflow.com/questions/4238345/ asynchrone-wait-for-taskt-to-complete-with-timeout) – i3arnon

Répondre

Questions connexes