2010-11-18 19 views
4

Salut Je souhaite implémenter le canevas asynchrone basé sur les événements à l'aide de C#. La documentation de Microsoft ci-dessous est vraiment utile, mais à juste titre, elle laisse de côté les détails d'implémentation.Comment procéder pour implémenter le modèle asynchrone basé sur les événements?

http://msdn.microsoft.com/en-us/library/ms228969.aspx

Quelles sont mes options pour la mise en œuvre de ce modèle? Dois-je utiliser Delegate.BeginInvoke, ThreadPool.QueueUserWorkItem, une nouvelle classe Thread(), BackgroundWorker ou autre chose? Je crée une bibliothèque de code simple. Il devrait être utilisable dans un formulaire Windows, une application de console ou un contexte ASP.NET.

Ce serait génial de voir un exemple de code.

+0

La page contient un lien vers un lien [ « Comment mettre en œuvre ... » ] (http://msdn.microsoft.com/en-us/library/e7a34yad.aspx), pour plus de détails, vous devez dire quoi/comment vous en avez besoin. –

Répondre

1

Lisez cette section de cet article:

http://msdn.microsoft.com/en-us/library/9hk12d4y.aspx

Cela dit, je dirais que la technique que vous devez utiliser dépend de votre application, sans plus de détails sur ce que ces opérations async vont faire et combien de fois ils seront appelés et dans quelles circonstances ils sont appelés, je ne peux pas donner une recommandation sur quelle est la meilleure technique à utiliser dans votre situation.

+0

L'opération asynchrone effectuera un traitement simple. L'opération async ne sera pas marteler toutes les ressources (db, système de fichiers, etc). Et il ne sera pas appelé très souvent. L'exemple que vous donnez utilise la classe AsyncOperationManager. Il semble y avoir beaucoup d'options sur la table. Quels critères utilisez-vous pour décider de votre approche? –

+0

Je fais la chose la plus facile possible (habituellement la plus facile à maintenir) qui fera le travail avec la performance dont j'ai besoin. Habituellement BackgroundWorker. –

4

Si vous souhaitez implémenter un modèle asynchrone basé sur des événements, alors AsyncFunc est la solution la plus simple.

Il simplifie considérablement ce modèle. Vous n'avez pas besoin de vous soucier de ThreadPools, Threads ou BackgroundWorkers. AsyncFunc gère tout pour vous. De plus, cette approche vous permet de séparer votre logique métier de l'implémentation spécifique au modèle, ce qui améliore la testabilité.

http://asyncfunc.codeplex.com

Vous pouvez trouver comparaison de MSDN et recommandé la mise en œuvre ainsi AsyncFunc du même composant:

MSDN vs. AsyncFunc

+0

Lien intéressant, thx. – leppie