Возможно, проблема в том, что вы используете фоновый поток для отображения окна вместо основного потока пользовательского интерфейса процесса. Элементы управления Winform либо генерируют исключения, либо ведут себя некорректно, если они не используются в соответствующем потоке. В этом случае проблема может заключаться в том, что ваше главное окно работает в главном потоке пользовательского интерфейса, в то время как это дополнительное диалоговое окно создается и отображается другим потоком.
Попробуйте вызвать событие из фонового потока, чтобы пользовательский интерфейс знал, что он требует ввода от пользователя. Затем пользовательский интерфейс может обрабатывать отображение диалогового окна и реагировать на ввод пользователя, передавая данные обратно в фоновый поток.
Чтобы предотвратить дальнейшее продолжение фонового потока, создайте объект System.Threading.AutoResetEvent (a WaitHandle) и вызовите метод WaitOne для этого объекта сразу после вызова события, чтобы уведомить пользовательский интерфейс о показе диалога. Когда пользовательский интерфейс отвечает на ввод пользователя, передавая данные обратно в фоновый поток, этот код может вызвать метод Set объекта AutoResetEvent, что позволяет фоновому потоку продолжить.