В программе есть много баттонов, у каждого свой код. Если запускать их не в потоке то программа на время выполнения кода зависает, как сделать так чтобы программа не зависала, не создавать же для каждого баттона отдельный клас поток и т.д.
Писать весь код в обработчиках кнопок не лучшая идея. Так что лучше пересмотреть архитектуру приложения, как вариант создай поток, который будет принимать сообщения от кнопок и выполнять нужный код уже вне контекста основного потока