在图片框中只有动画GIF的C#启动画面会随机崩溃图片框

时间:2013-05-29 10:21:17

标签: c# .net image gif splash

我为我的Windows表单应用程序添加了一个非常简单的Splash屏幕,只有一个PictureBox。表单的透明度键和背景颜色设置为相同。我将图片框的图像设置为动画gif文件。它在我的一台机器上运行良好。

在某些机器上,在大约一秒钟的动画之后,我会在完全随机的瞬间得到图片框上带有红色X的错误图像。一旦我收到错误,相同的红色X随机出现在按钮上。

运行时编译和构建的exe文件会抛出JIT编译错误消息,即使错误对话框的按钮也会变为红色X.以下是错误详细信息..

有关调用的详细信息,请参阅此消息的结尾 实时(JIT)调试而不是此对话框。

(我不会在这里粘贴代码,因为它非常简单和愚蠢)

  

** * ** 异常文字 ** * **** System.Runtime.InteropServices.ExternalException(0x80004005):A   GDI +中发生了一般错误。在   System.Drawing.Image.SelectActiveFrame(FrameDimension维度,Int32   System.Drawing.ImageAnimator.ImageInfo.UpdateFrame()中的frameIndex)   在System.Drawing.ImageAnimator.UpdateFrames()at   System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)at   System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e,   在System.Windows.Forms.Control.WmPaint(消息& m)的Int16层)   在System.Windows.Forms.Control.WndProc(Message& m)at   System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   在System.Windows.Forms.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/assembly/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    - - - - - - - - - - - - - - - - - - - - 系统配置       汇编版本: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构建者:RTMRel

     

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

     

** * ** JIT调试 ** * **** 要启用实时(JIT)调试,此应用程序的.config文件或电脑   (machine.config)必须在中设置jitDebugging值   system.windows.forms部分。该应用程序也必须编译   启用调试。

     

例如:

     

       

     

启用JIT调试时,将发送任何未处理的异常   JIT调试器在计算机上注册而不是由处理   这个对话框。

是否有解决这个问题或是一个愚蠢的问题要问?我用Google搜索并环顾四周,遇到这个问题的人没有一个合适的解决方案:(

附加信息: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());
    }

0 个答案:

没有答案