L'Écran de démarrage d'attente jusqu'à ce thread finitions

J'ai encore un problème avec l'écran de démarrage. Je ne veux pas utiliser la propriété SC.TopMost=true.

Maintenant mon scénario de l'application est comme suit:

dans progeram.cs:

[STAThread]
static void Main()
{
    new SplashScreen(_tempAL);//where _tempAL is an arrayList
    Application.Run(new Form1(_tempAL));
}

en classe SplashScreen:

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 < _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 < 4 && _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 > 0 && ind < _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++;
}
}

Ce que je veux, c'est quelque chose dans l'écran de démarrage de classe qui attend jusqu'à ce que le thread se termine.

Pour plus de détails, s'il vous plaît dites-moi ce que je besoin de vous dire.

  • Il n'est pas évident pour moi (quelqu'un qui n'a pas de programme en C#) ce que le _tempAL truc est de cela dont il n'est pas utilisé dans le Splashscreen de classe. Vous avez également le littéral "c:\\ASGAQuraan\\", apparaissent un certain nombre de fois; qui devrait sûrement être une constante nommée, plutôt que de répéter. SEC - Ne pas se Répéter.
  • Il aurait été génial si vous avez fourni le lien vers votre autre question. Si vous dites "j'ai toujours le même problème", qui doit savoir ce que votre problème en parlant de tout et ce "toujours le même" fait référence? J'ai trouvé ça maintenant, comme une référence: stackoverflow.com/questions/392787/...
InformationsquelleAutor BDeveloper | 2008-12-25