Я столкнулся с подобной проблемой в моем программном обеспечении, но, к сожалению, просто заставить потоки работать в фоновом режиме, не решить проблему. Фактически, хотя поток возвращает данные (основное программное обеспечение управляется данными), и если я закрываю приложение, это приводит к ошибке Windows, приводящей к сообщению отладки.
Так, что на самом деле работало для меня:
Шаг 1: Сделано, чтобы все потоки работали в фоновом режиме, например
Thread aThread = new Thread(MethodName);
aThread.IsBackground = true; //<-- Set the thread to work in background
aThread.Start();
Шаг 2: В действии закрытия формы / приложения вызовите метод Environment.Exit, например
Environment.Exit(Environment.ExitCode);
Это обеспечивало идеальное управление памятью без утечки памяти.
Надеюсь, это поможет.