2015-07-27 3 views
1

Я использую Watin внутри задачи, которые бросают исключениеWatin с System.Threading.Tasks.Task бросить 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' 

Мой код похож

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

Как я могу решить эту проблему?
Я пытаюсь Google, но не могу найти решение.

+0

Если вам небезразличен вопрос о том, какой поток требуется выполнить, возможно, вам следует просто создать поток. Вы можете обернуть его в методе, который использует 'TaskCompletionSource', чтобы открыть« Задачу ». См. Http://stackoverflow.com/a/16722767/1726343 –

ответ

-1

Использовать метод async с ожиданием. Вы можете получить много примеров для этого из Интернета.

1

Ничего страшного с кодом. Прочитайте это в документации WatiN:

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

Из документации:

Поведение WatiN, когда тема не является STA Thread.

WatiN выбросит ThreadStateException при создании экземпляра класс WatiN.Core.IE, чтобы помочь вам напомнить, чтобы установить ApartmentState в ГНА.

Смежные вопросы