2014-06-09 6 views
1

Dans mon scénario, lorsque l'utilisateur modifie des champs du programme et exécute un SAVE, une demande webserivce est envoyée pour enregistrer des informations de journalisation dans la base de données. Je l'ai fait une recherche sur le site et a trouvé cette solution pour Async appels:Appel asynchrone du service Web ASMX

ThreadPool.QueueUserWorkItem(delegate 
{ 
    // Create an instance of my webservice object. 
    // call its Log webmethod. 
}); 

Mais depuis que je n'ai pas beaucoup d'expérience avec webservices et Async appels donc je voulais vous montrer le scénario que je l'ai et la façon dont je Je le gère pour obtenir votre opinion à ce sujet et si c'est la bonne façon de le faire. Merci pour vos suggestions

Répondre

2

Pouvez-vous tolérer que le travail de journalisation soit perdu? Ce n'est qu'alors que vous devez démarrer le "travail en arrière-plan" dans une application ASP.NET.

QueueUserWorkItem fonctionnera. La version la plus moderne est Task.Run. Assurez-vous d'attraper les erreurs qui se produisent sur ce thread thread-pool. Sinon, vous ne découvrirez jamais les bogues et perdrez silencieusement du travail.

Si vous prévoyez un volume élevé d'appels de ce type ou si vous vous attendez à ce qu'ils prennent beaucoup de temps, consider using async IO. Il n'utilise pas de thread en cours (pas même un thread d'arrière-plan).

+0

Merci pour vos suggestions. –

+0

prob parce que je suis sur .NET 4.i il ne me montre pas Task.Run? Mais l'intellisence me montre Task.Factory.StartNew(). Est-ce bien aussi? –

+0

C'est presque le même et entièrement utilisable. Vous pouvez effectuer des recherches sur les meilleures pratiques concernant l'API de tâches. Ne prend pas longtemps et pourrait vous sauver des ennuis. – usr

Questions connexes