私は、スプラッシュ画面をロードするための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();
}
}
}
[スピンスクリーンの組み込みサポート](http://stackoverflow.com/a/393870/17034)を使用して自分のスピンをスピンさせます。 –
@HansPassant変更の代わりにこのコードを訂正する方法はありませんか? –
元のコードはあまり意味がありません...通常、UIには1つのスレッドが使用され、UIスレッドでは**スリープしません。 **スレッドを中止することも避けてください。**適切に設計されたアプリケーションでは、そのようなハッキングを使用しません。 – Phil1970