2010-07-26 3 views
0

J'ai lu à propos de l'exécution d'opérations asynchrones et j'ai trouvé que cela pouvait être fait au niveau des exécutions de commandes SQL (manipulées lors de l'exécution de la commande SQL en ajoutant AsynchResult) (qui se fait à l'aide de délégué qui pointe vers un procédé commence alors invoquer des méthodes asynchrone) comme suit:Exécution d'opérations asynchrones

côté SQL (à l'aide de la poignée d'attente et DELAYFOR dans la commande SQL): http://msdn.microsoft.com/en-US/library/yws6262h%28v=VS.80%29.aspx

côté de l'interface utilisateur

: http://msdn.microsoft.com/en-US/library/2e08f6yc%28v=VS.80%29.aspx

mais je ne sais pas ce qui est mieux en ce qui concerne la performance et l'exécution? Est-ce que quelqu'un peut me dire les différences en ce qui concerne la perspective de performance?

et qui est mieux aussi cette technique ou technique de file d'attente de pool de threads?

Merci à l'avance

+0

clarifions WHT do u dire par "côté des exécutions de commandes SQL? – deostroll

+0

Je l'ai édité s'il vous plaît j'ai besoin d'une réponse rapide – Ahmy

Répondre

1

En supposant par « côté SQL » vous voulez dire les BeginXXX EndXXX méthodes sur l'objet SqlCommand, et le sens de l'interface utilisateur simplement un délégué exécuté de manière asynchrone - il n'y a pas de différence de performance fournie en utilisant simplement un par rapport à l'autre . Une différence de performance entre les deux sera uniquement en relation avec le code que vous exécutez - le côté SQL n'exécutera la commande que de manière asynchrone, le côté de l'interface utilisateur peut avoir beaucoup d'autres codes que vous fournissez.

Dans de nombreux cas, il suffit simplement de fournir les actions asynchrones à un niveau plus élevé que la commande SQL. Dans certains cas, comme votre couche d'accès aux données voulant démarrer plusieurs commandes à la fois, il sera bon d'utiliser les méthodes SqlCommand.

J'espère que c'est quelque part près de ce que vous recherchez.

Notez que l'exécution d'un délégué de manière asynchrone (Delegate.BeginInvoke) ou d'une méthode BeginXXX utilisera un thread ThreadPool. Les différences entre l'utilisation d'un délégué par rapport au pool de threads sont rapidement décrits ici:

http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/

+0

Alors, quelle est la différence entre déléguer de manière asynchrone (.BeginInvoke) et le pool de threads qui utilisent des threads (QueueUserWorkItem)? – Ahmy

+0

Voici une explication rapide: http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/ –

+0

+1 pour votre explication innovante – Ahmy