2017-02-11 5 views
2

私は、スプラッシュ画面をロードするための1つのプログラムを設計し、コード化しました。私は、ロードフォームを完全に閉じ、メインフォームを表示するメインフォームのスレッドを使用しました。 この処理には約5000人がかかります。 しかし、プログラムでスレッドを使用すると、5000 MS後にスプラッシュスクリーンが消え、メインフォームが正しく表示されます。 しかし、メインフォームが表示されてから1〜2秒後に、プログラムは閉じてBreakModeに行きます!理由を教えてください。 ここに私のコードです。たぶん私のコードに問題があります。 ご提案いただきありがとうございます。 (Visual Studioの2015 Enterpriseを使用して)windowsFormsのスレッドを使用

public MainForm() 
{ 
    Thread t = new Thread(new ThreadStart(StartForm)); 
    t.Start(); 
    Thread.Sleep(7000); 
    InitializeComponent(); 
    t.Abort(); 
} 
public void StartForm() 
{ 
    Application.Run(new frmSplashScreen()); 
} 

__________________________UPDATE___________________________ 私はこの方法https://stackoverflow.com/a/393870/17034を使用し、鉱山の中にフォームの名前を変更しました。 しかし、もう一度私がBreakingModeで直面しているプログラムを使用すると! これは私を狂った あなたの提案男は何ですか? このモードを無効にする方法はありますか。 ここに私の新しいコードです:

using System; 

のSystem.Windows.Formsを使用しました。

Microsoft.VisualBasic.ApplicationServicesを使用しています。

名前空間大学

{

static class Program 

{ 

    [STAThread] 

    static void Main(string[] args) 

    { 

     Application.EnableVisualStyles(); 

     Application.SetCompatibleTextRenderingDefault(false); 

     new MyApp().Run(args); 

    } 

} 

class MyApp : WindowsFormsApplicationBase 

{ 

    protected override void OnCreateSplashScreen() 

    { 

     this.SplashScreen = new frmSplash(); 

    } 

    protected override void OnCreateMainForm() 

    { 

     System.Threading.Thread.Sleep(4500); 

     this.MainForm = new MainForm(); 


    } 

} 

}

+1

[スピンスクリーンの組み込みサポート](http://stackoverflow.com/a/393870/17034)を使用して自分のスピンをスピンさせます。 –

+0

@HansPassant変更の代わりにこのコードを訂正する方法はありませんか? –

+0

元のコードはあまり意味がありません...通常、UIには1つのスレッドが使用され、UIスレッドでは**スリープしません。 **スレッドを中止することも避けてください。**適切に設計されたアプリケーションでは、そのようなハッキングを使用しません。 – Phil1970

答えて

3

あなたのプログラムは、あなたのfrom.csを開始し、その後、フォームを示しmain.csを持つことになります。あなたがしたいのは、この他のフォームが非同期的に表示されるようにmain.csを編集することです。その後、起動時に開始するスプラッシュ画面でタイマーを使用し、開いている時間が経過すると終了します。その後、main.csは通常どおり続行されます。

しかし、この回答は私が行った作業に基づいており、プロジェクトに関連していない可能性があります。 gitのリンクやコードの残りの部分を投稿してください。私は答えを更新しますか?

+1

ご協力いただきありがとうございます。私はこの方法でhttp://stackoverflow.com/a/393870/17034を試み、それは私を助けた。 –

関連する問題