2015-07-27 1 views
1

J'utilise Watin à l'intérieur des tâches qui jettent exceptionWatin avec System.Threading.Tasks.Task jeter ThreadStateException

ThreadStateException with an error message of 'The CurrentThread needs to have its ApartmentState set to ApartmentState.STA to be able to automate Internet Explorer' 

Mon code ressemble

Task task = Task.Factory.StartNew(() => 
        { 
       try{ 
        string Url="www.google.com"; 
        IE ie = new IE(Url); 
       } 
       catch (Exception ex) 
      { 
      throw ex; //ThreadStateException 
      }  
}); 

Comment puis-je résoudre ce problème?
J'essaye de google mais incapable de trouver la solution.

+0

Si vous vous souciez du type de thread sur lequel la tâche doit s'exécuter, vous devriez peut-être simplement créer un thread à la place. Vous pouvez l'inclure dans une méthode qui utilise 'TaskCompletionSource' pour exposer une' Task'. Voir http://stackoverflow.com/a/16722767/1726343 –

Répondre

-1

Utilisez la méthode async avec wait. Vous pouvez obtenir beaucoup d'exemples pour cela sur le web.

1

Rien de "faux" avec le code. Lisez ceci sur la documentation Watin:

http://watin.org/documentation/sta-apartmentstate/

De la documentation:

Comportement de Watin lorsque la discussion est pas un thread STA.

Watin lancera une ThreadStateException lorsque vous créez une instance de la classe WatiN.Core.IE, pour vous aider à rappeler à régler le ApartmentState à STA.