2009-08-13 4 views
2

Je dois envoyer de nombreux appels de service Web pour supprimer un tas d'enregistrements dans Amazon SDB (malheureusement, les lignes ne peuvent être supprimées qu'une seule à la fois actuellement). J'utilise la bibliothèque SDB C# d'Amazon qui n'utilise pas WebRequests asynchrones.C#: Délégués asynchrones vs ThreadPool.QueueUserWorkItem lors de l'initialisation de plusieurs connexions

Actuellement j'utilise ThreadPool.QueueUserWorkItem à faire la queue un tas d'appels (j'ai configuré mon connectionManagement maxconnection pour permettre un tas de connexions) cela fonctionne well..as la demande est envoyée, il bloque et une autre demande est fabriqué.

Est-ce la mauvaise façon d'atteindre cet objectif? Dois-je utiliser des délégués asynchrones et faire BeginInvoke et EndInvoke?

Répondre

4

Si vous avez juste besoin de mettre en attente des travaux (qui ne renvoient pas de valeurs directement), passez à ThreadPool.QueueUserWorkItem. C'est plus rapide. La différence est couverte dans other questions (et quelques grandes entrées de blog là-bas.)

2

Going vraiment async aurait besoin d'abandonner la bibliothèque Amazon et rouler le vôtre, en utilisant BeginGetRequestStream/BeginGetResponse (que je recommanderais). Si vous respectez les requêtes Web de synchronisation, utilisez QueueUserWorkItem.

Questions connexes