我为我的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());
}