2010-08-24 3 views
4

J'utilise C# .NET 4 et MSSQL. J'écris un code qui télécharge le code HTML de différents sites Web et l'analyse en utilisant Regex..NET 4 Async WebRequest Vs Mutiple Threads

La plupart du temps, le code à exécuter attend le téléchargement du site Web html pour terminer.

Actuellement, j'utilise Task.Factory.StartNew pour créer plusieurs threads qui appellent DownloadHtml(). DownloadHtml utilise WebRequest & StreamReader pour télécharger et lire le code HTML du site.

1.Devrais-je modifier DownloadHtml pour utiliser Async WebRequest et utiliser un seul thread? 2.Comment est-ce différent d'utiliser plusieurs threads?

+0

Généralement, Task.Factory.StartNew ne génère pas de nouveau thread sauf si vous lui transmettez le LongRunningFlag. Il crée une tâche qui sera planifiée sur un thread (par défaut un thread de pool de threads). –

Répondre

1
  1. Je vous recommande d'utiliser la requête Web asynchrone. Il est important de savoir que cela n'utilise pas un seul thread. Le rappel de la requête asynchrone s'exécutera sur un thread d'arrière-plan de thread. Comme vous utilisez le TPL, je vous suggère de regarder la fonctionnalité intégrée dans ces classes pour prendre en charge les requêtes asynchrones (http://msdn.microsoft.com/en-us/library/dd997423.aspx).

  2. Comme mentionné précédemment, plusieurs threads sont encore utilisés.

+0

thx, alors pourquoi async WebRequest est-il préférable à l'utilisation de Task.Factory.StartNew? – RuSh