猿问

启动屏幕等待线程完成

启动屏幕等待线程完成

我还是有问题的飞溅屏幕。我不想用这房子SC.TopMost=true.

现在,我的应用程序场景如下:

在方案中:

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

在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);

我想要的是SplashScreen类中的一些内容,它等待线程完成。

想知道更多细节,请告诉我需要告诉你的。


慕无忌1623718
浏览 419回答 3
3回答

至尊宝的传说

在两个线程中进行跟踪有点让人费解,但我要试一试,然后说.我不完全理解您的设计,但是如果问题是当您启动第二个应用程序时,SplashScreen表单会变成白色.这很可能是因为启动屏幕忙于执行GetFromServer()中的所有代码。太忙了,以至于没有时间重新粉刷自己。为了解决这个问题,我建议您使用后备作业部件若要执行GetFromServer方法,请执行以下操作。这将在一个单独的线程中运行该方法,并让表单的线程自由重新绘制自己。
随时随地看视频慕课网APP
我要回答