Starting multiple gui (WinForms) threads so they can work separetly from one main gui in C#? <p>I've one MainForm window and from that user can press 3 buttons. Each of the button starts new Form in which user can do anything he likes (like time consuming database calls etc). So i decided to put each of the forms in it's own threads:</p> <pre><code> private Thread subThreadForRaportyKlienta; private Thread subThreadForGeneratorPrzelewow; private Thread subThreadForRaporty; private void pokazOplatyGlobalne() { ZarzadzajOplatamiGlobalneDzp varGui = new ZarzadzajOplatamiGlobalneDzp(); varGui.ShowDialog(); } private void pokazRaportyKlienta() { RaportyDzpKlient varGui = new RaportyDzpKlient(); varGui.ShowDialog(); } private void pokazRaportyWewnetrzne() { RaportyDzp varGui = new RaportyDzp(); varGui.ShowDialog(); } private void pokazGeneratorPrzelewow() { ZarzadzajPrzelewamiDzp varGui = new ZarzadzajPrzelewamiDzp(); varGui.ShowDialog(); } private void toolStripMenuGeneratorPrzelewow_Click(object sender, EventArgs e) { if (subThreadForGeneratorPrzelewow == null || subThreadForGeneratorPrzelewow.IsAlive == false) { subThreadForGeneratorPrzelewow = new Thread(pokazGeneratorPrzelewow); subThreadForGeneratorPrzelewow.Start(); } else { } } private void toolStripMenuGeneratorRaportow_Click(object sender, EventArgs e) { if (subThreadForRaporty == null || subThreadForRaporty.IsAlive == false) { subThreadForRaporty = new Thread(pokazRaportyWewnetrzne); subThreadForRaporty.Start(); } else { } } private void toolStripMenuGeneratorRaportowDlaKlienta_Click(object sender, EventArgs e) { if (subThreadForRaportyKlienta == null || subThreadForRaportyKlienta.IsAlive == false) { subThreadForRaportyKlienta = new Thread(pokazRaportyKlienta); subThreadForRaportyKlienta.Start(); } else { } } </code></pre> <p>I've got couple of questions and i hope someone could explain them:</p> <ol> <li>When i use <code>Show()</code> instead of <code>ShowDialog()</code> the windows just blink for a second and never shows. What's the actual difference between those two and why it happens?</li> <li>When i use <code>ShowDialog</code> everything seems normal but i noticed not everything gets filled properly in one of the gui's (one listView stays blank even thou there are 3 simple add items in <code>Form_Load()</code>. I noticed this only in one GUI even thou on first sight everything works fine in two other gui's and i can execute multiple tasks inside those Forms updating those forms in background too (from inside the forms methods). Why would this one be diffrent?</li> <li>What would be proper way of doing this? Tasks performed in each of those Forms can be time consuming and i would like to give user possibility to jump between those 4 windows without problem so he can execute what he likes. </li> </ol>