0

PictureBox だけを使用して、Windows フォーム アプリ用の非常にシンプルなスプラッシュ スクリーンを作成しました。フォームの透過キーと背景色は同じに設定されています。ピクチャ ボックスの画像をアニメーション gif ファイルに設定しました。私のマシンの1つで問題なく動作しました。

一部のマシンでは、アニメーションの約 1 秒後に、完全にランダムな瞬間に、画像ボックスに赤い X が付いたエラー画像が表示されます。エラーが発生すると、ボタンの上に同じ赤い X がランダムに表示されます。

コンパイルおよびビルドされた exe ファイルを実行すると、JIT コンパイル エラー メッセージがスローされ、エラー ダイアログ ボックスのボタンが赤い X に変わります。エラーの詳細は次のとおりです。

このダイアログ ボックスの代わりに Just-In-Time (JIT) デバッグを呼び出す方法の詳細については、このメッセージの最後を参照してください。

(とてもシンプルでばかげているので、ここにコードを貼り付けません)

** * **例外テキスト** * **** System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ で一般的なエラーが発生しました。System.Drawing.Image.SelectActiveFrame (FrameDimension ディメンション、Int32 frameIndex) で System.Drawing.ImageAnimator.ImageInfo.UpdateFrame() で System.Drawing.ImageAnimator.UpdateFrames() で System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe ) System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e、Int16 レイヤー) で System.Windows.Forms.Control.WmPaint(Message& m) で
System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) で System.Windows.Forms.Control.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows .Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

** * **読み込まれたアセンブリ** * ****mscorlib アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 (RTMRel.030319-0100) CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll ----- ----------------------------------- ERingWizzard アセンブリ バージョン: 1.0.0.0 Win32 バージョン: 1.0.0.0 CodeBase: file:///B:/BuildersAvenue/Wizzard/ERingWizzard/ERingWizzard/bin/Debug/ERingWizzard.exe --------------------------- ------------- System.Windows.Forms アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/アセンブリ/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ------------------------- --------------- System.Drawing アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ---------------------- ------------------ システム アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 ビルド: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net /assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll -------------------------------- -------- System.Configuration アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 (RTMRel.030319-0100) CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll --------------------------------- ------- System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRel0__b03f5f7f11d50a3a/System.Drawing.dll -------------------------------------------- システム アセンブリのバージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 ビルド: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll --- ------------------------------------- System.Configuration アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0 .30319.1 (RTMRel.030319-0100) CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ---- ------------------------------------ System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0。 30319.1 作成者: RTMRel0__b03f5f7f11d50a3a/System.Drawing.dll -------------------------------------------- システム アセンブリのバージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 ビルド: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll --- ------------------------------------- System.Configuration アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0 .30319.1 (RTMRel.030319-0100) CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ---- ------------------------------------ System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0。 30319.1 作成者: RTMRel1 ビルド: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll ------------ ---------------------------- System.Configuration アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 (RTMRel.030319-0100) CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ------------- --------------------------- System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRel1 ビルド: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll ------------ ---------------------------- System.Configuration アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 (RTMRel.030319-0100) CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ------------- --------------------------- System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRelfile:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll --------------- ------------------------- System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRelfile:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll --------------- ------------------------- System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRel

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

** * **JIT デバッグ** * **** Just-In-Time (JIT) デバッグを有効にするには、このアプリケーションまたはコンピューターの .config ファイル (machine.config) の system.windows.forms セクションに jitDebugging 値が設定されている必要があります。アプリケーションは、デバッグを有効にしてコンパイルする必要もあります。

例えば:

JIT デバッグが有効になっている場合、未処理の例外は、このダイアログ ボックスで処理されるのではなく、コンピューターに登録されている JIT デバッガーに送信されます。

これを回避する方法はありますか、それともばかげた質問ですか? 私はググって周りを見回しましたが、この問題を抱えていた人は誰も適切な解決策を持っていませんでした:(

追加情報: gif 画像は長方形ではないため、背景と同じになるように設定されたフォームの透明キーを使用する必要がありました..

これがコードです..

    public MainForm()
    {
        this.SuspendLayout();
        this.Hide();

        Thread t = new Thread(new ThreadStart(SplashScreen));

        t.Start();

        InitializeComponent();

        Thread.Sleep(2000);

        ticker.Interval = 1800000;
        ticker.Start();

        t.Abort();

        this.Show();
        this.ResumeLayout();
    }

    private void SplashScreen()
    {
        Application.Run(new Splash());
    }
4

0 に答える 0