[C#] Praca z wieloma formami - zamykanie aplikacji

Witam

Chciałbym zapytać jaka jest dobra praktyka przy pracy z wieloma oknami gdzie głównym oknem aplikacji jest inne okno niż to które pojawia się na starcie. Mam na myśli to że uruchamiam okno “Wybór czegoś tam”. Wybieram i chcę to okno zamknąć i przerzucić się na inne i ono jest moim głównym oknem w programie. Jeśli je zamknę aplikacja również ma się zamknąć. Niestety natrafiam na różne przypadki gdzie aplikacja wisi w procesach albo dostaję komunikat przy linijce

base.Dispose(disposing);

o treści

Nieprawidłowa operacja między wątkami: do formantu 'splitContainerJobLoad' uzyskiwany jest dostęp z wątku innego niż wątek, w którym został utworzony.

Może powinienem mimo wszystko załadować główną formę w Program.cs, ukryć ją i zrobić ShowDialog czy Show drugiej formy?

Zaprezentuj kod/sposób tworzenia swoich okien i komunikacji między nimi.