При написании автоматических тестов для тестирования сайтов я использовал многопоточность. Об этом я рассказывал в своей предыдущей статье. Однако реализовав описанное в предыдущей статье, я столкнулся с проблемой, когда NUnit agent вываливался с ошибкой «NUnit Agent has stopped working».

Подробности ошибки:
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: nunit-agent-x86.exe
Problem Signature 02: 3.6.1.0
Problem Signature 03: 58bdfcf6
Problem Signature 04: System
Problem Signature 05: 4.6.1087.0
Problem Signature 06: 583e5c41
Problem Signature 07: 9ef
Problem Signature 08: 21a
Problem Signature 09: OpenQA.Selenium.WebDriver
OS Version: 6.3.9600.2.0.0.272.7
Locale ID: 1033
Additional Information 1: 5861
Additional Information 2: 5861822e1919d7c014bbb064c64908b2
Additional Information 3: 6ee2
Additional Information 4: 6ee2432e64e99bdcea5e4be767a3b1a2
Я не мог понять в чём проблема. У меня сразу возникла первая мысль, что многопоточность с тестами не совместима. Но я её отбросил как глупую. В русскоязычном интернете информацию по поводу падения NUnit agent не нашёл. Тогда начал изучать англоязычные ресурсы.
В процессе изучения выяснил, что это возникает из-за того, когда в процессе работы в отдельном потоке возникает ошибка, происходит аварийное завершение работы приложения и в итоге это выглядит так как будто это возникла проблема с NUnit agent и он «падает» с ошибкой. Т.е. ошибка, допущенная в коде C# или исключение, которое возникает в процессе работы приложения на C# приводит к «падению» приложения и как итог «падает» и NUnit agent. И самое печальное, что сообщение об ошибке не будет выведено на экран средствами .Net и мы остаёмся в неведении.
Я решил эту проблему просто, но возможно не совсем правильно. Весь код, который исполняется во втором потоке, я оборачиваю в «try-catch» и при возникновении ошибки исключение перехватывается, что не приводит к падению приложения. В «catch» можно добавить код записи ошибки в лог и тогда мы можем по логу определять, какие проблемы у нас появляются при работе приложения.