title: Splash Screen waiting until thread finishes
body: <p>I still have a problem with the splash screen. I don't want to use the property <code>SC.TopMost=true</code>.</p>
  
  <p>Now my application scenario is as follows:</p>
  
  <p><strong>in progeram.cs:</strong></p>
  
  <pre><code>[STAThread]
  static void Main()
  {
      new SplashScreen(_tempAL);// where _tempAL is an arrayList
      Application.Run(new Form1(_tempAL));
  }
  </code></pre>
  
  <p><strong>in SplashScreen class:</strong></p>
  
  <pre><code>public SplashScreen(ArrayList _Data)
  {
      DisplaySplash()
  } 
  private void DisplaySplash()
  {
      this.Show();
      this.TopMost = true;
      this.CenterToScreen();
      this.SetTopLevel(true);
  
      _allServerNarrators = new string[10];
      for (int i = 0; i &lt; _allServerNarrators.Length; i++)
          _allServerNarrators[i] = null;
  
      GetFromServer();
  
      this.Hide();
      _serverData = new ArrayList();
      _thisData.Add(_allServerNarrators);
      _thisData.Add(_serverNarrators);
  
  }
  private void GetFromServer()
  {
      _serverNarrators = new ArrayList();
      string _file = "Suras.serverNar";
  
      if (!Directory.Exists("c:\\ASGAQuraan"))
          Directory.CreateDirectory("c:\\ASGAQuraan");
  
      while (counter &lt; 4 &amp;&amp; _serverFiles == null)
      {
          if (Download("c:\\ASGAQuraan", _ftpServerIP, _file))
          {
              StreamReader _strReader = new StreamReader
                           ("c:\\ASGAQuraan\\"+_file,System.Text.Encoding.Default);
              string _line = _strReader.ReadLine();
              string _word;
  
              while (true)
              {
                  while (_line != null)
                  {
                      _word = _line.Substring(0, _line.IndexOf("*"));
                      int _narId = Convert.ToInt32(_word);
                      _line = _line.Substring(2);
                      int k = 0;
                      _serverNarratorNode = new ArrayList();
                      while (true)
                      {
                          int ind = _line.IndexOf("*");
                          if (ind &gt; 0 &amp;&amp; ind &lt; _line.Length)
                          {
                              string str = _line.Substring(0, (ind));
                              if (k == 0)
                              {
                                  _allServerNarrators[_narId] = str;
                                  _serverNarratorNode.Add(str);
                              }
                              else
                              {
                                  _serverNarratorNode.Add(str);
                              }
                              _line = _line.Substring(ind + 1);
                              k++;
                          }
                          else
                          {
                              _line = null;
                              break;
                          }
                      }
                      _serverNarrators.Add(_serverNarratorNode);
                      _serverFiles = "added";
                  }
                  _line = _strReader.ReadLine();
                  if (_line == null)
                  {
                      break;
                  }
              }
          }
          else
              counter++;
      }
  }
  </code></pre>
  
  <p>What I want is something in the splash screen class which waits until the thread finishes.</p>
  
  <p>For more details, please tell me what I need to tell you.</p>