2009-07-30 5 views
0

Existe-t-il un moyen d'invoquer une méthode sur un thread d'arrière-plan?Comment invoquer un thread d'arrière-plan

Je suis conscient de BackgroundWorker/Création d'un fil ou d'utiliser ThreadPool.QueueUserWorkItem etc, mais ce n'est pas la réponse que je cherche

pour exemple le SCSF a des attributs pour assurer la méthode est invoquée sur un fond ou un thread d'interface utilisateur

Je voudrais faire quelque chose de similaire pour une petite application et je cherche un exemple de travail

+1

Qu'est-ce qui ne va pas avec QueueUserWorkItem? Est-ce que ce n'est pas suffisant? N'est-il pas vrai que les threads qui s'exécutent à la suite de QUWI sont des threads d'arrière-plan? – Cheeso

+0

expliqué ci-dessus ---- encore cité ... le SCSF a des attributs pour s'assurer que la méthode est invoquée sur un fond ou un thread d'interface utilisateur Je voudrais faire quelque chose de similaire pour une petite application et je cherche un exemple de travail – Kumar

Répondre

0

Il existe plusieurs façons d'invoquer une méthode sur un thread d'arrière-plan.

Voulez-vous bloquer pendant l'exécution de la méthode? Voulez-vous un résultat renvoyé par la méthode? Voulez-vous que ce résultat s'affiche dans l'interface utilisateur? La méthode est-elle appelée une seule fois? Plusieurs fois, au besoin? Plusieurs fois dans une boucle? Asynchrone? Le thread d'arrière-plan doit-il continuer si votre application se ferme? La réponse à ces questions vous dira quelle méthode vous devriez utiliser.

Vous pouvez obtenir une vue d'ensemble des différentes méthodes de passage de messages de threads à partir d'un grand article à The Code Project.

0

Le pool de threads utilise déjà des threads d'arrière-plan. Cependant, vous n'avez aucun contrôle sur ces threads. Si vous voulez le contrôle, alors vous devez utiliser System.Threading.Thread. Cela vous donne plus de contrôle sur la façon dont un thread est créé (arrière-plan, premier plan, etc.) et géré (suspendre, reprendre, dormir, etc.).

Questions connexes