Если бы проблемы были связаны с потоками, вы бы получили исключения.
Приложение не обновляет обновление пользовательского интерфейса, поскольку оно занимается другими делами, такими как попадание в базу данных.
Начните с простого метода в форме, подобной этой:
private void SetStatus(string status)
{
label1.Text = status;
Application.DoEvents();
}
Тогда вы просто набираете SetStatus("executing...")
и т. Д. В своем коде.
Если вы делаете шаги, вам нужно использовать метод invoke, упомянутый @ Aaron
Фоновые предложения рабочих тоже хороши, но если вышеперечисленное сработает, оно может вам не понадобиться, рабочие делают вещи немного интереснее!
ПК: -)