Ошибки «отправить / не отправить», как правило, возникают, когда у вас есть необработанное исключение в фоновом потоке (основной поток покажет, что продолжить / выйти из диалога .NET с трассировкой стека).
Добавьте обработчик исключений в функцию вашего потока и войдите оттуда:
void RunMyThread()
{
try
{
// background thread code
}
catch (Exception ex)
{
// Log the exception
}
}
Это очень упрощено и может не соответствовать тому, как вы хотите обработать исключение. Но, надеюсь, это заставит вас двигаться в правильном направлении.