Что вам нужно сделать, это установить поток, в котором выполняется тест, в режим STA, и IE быстро закроется.
[CodedUITest]
public class DoSomeAutomatedTesting
{
public DoSomeAutomatedTesting()
{
// Hey! Hey! Hey! We can't do no MTA!
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
}
[TestMethod]
public void MyTestMethod()
{
using(var ie = new IE())
{
ie.AutoClose = true;
ie.GoTo("http://www.google.com");
}
}
}
Для тех из вас, кто не является старым пукающим, кто занимался программированием COM, здесь описывается STA http://msdn.microsoft.com/en-us/library/windows/desktop/ms680112(v=vs.85).aspx. Короткая история, STA - это метод старой школы, используемый COM для сохранения жизнеспособности существующих, протестированных , работающий однопоточный код, оставшийся с Windows 95 дней в страшном новомодном мире упреждающей многопоточности.
Теперь CLR живет в том, что COM называет MTA. Для тех из нас, кто не живет в 1998 году, вы можете думать о MTA как о реальном мире, где все работает так, как должно. http://msdn.microsoft.com/en-us/library/windows/desktop/ms693421(v=vs.85).aspx
Когда какой-то поток в супер-страшном MTA хочет получить доступ к чему-либо в STA, потоку MTA приказывают сесть на скамейку и ждать своей очереди, если к STA в настоящее время обращаются из другого потока из MTA. Это в основном означает, что иногда, когда погода не подходящая, вы можете получить эти странные лаги.