Вместо того, чтобы выполнять очистку в том же потоке (или запускать фоновый поток и блокировать до его завершения), начните очистку на "фоне" (IsBackground = false, поэтому он не прекращается досрочно) поток и немедленно возвращаются.
Когда это плохая идея и как плохо? Это хорошая идея?