2012-01-29 197 views
0

我已经制作了这个程序,它在Windows 7中工作正常,但它似乎在Windows XP中无法正常工作,因为它立即崩溃来自Windows的'Program has closed bla bla error report'消息。 一些谷歌搜索后,我发现一个解决方案,让自己在事件日志中的异常日志。 这是结果:

编辑:新的异常日志(与未处理的异常过滤器)

例外是:Het doel面包车EEN aanroep heeft EEN uitzondering veroorzaakt。 BIJ System.RuntimeMethodHandle._SerializationInvoke(对象目标, SignatureStruct & declaringTypeSig,SerializationInfo中的信息, 的StreamingContext上下文)BIJ System.RuntimeMethodHandle.SerializationInvoke(对象目标, SignatureStruct declaringTypeSig,SerializationInfo中的信息, 的StreamingContext上下文)BIJ 系统。 Reflection.RuntimeConstructorInfo.SerializationInvoke(对象 目标的SerializationInfo信息,的StreamingContext上下文)BIJ System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(对象 OBJ,的SerializationInfo信息,的StreamingContext上下文)BIJ System.Runtime.S erialization.ObjectManager.FixupSpecialObject(的ObjectHolder 持有者)BIJ System.Runtime.Serialization.ObjectManager.DoFixups()
BIJ System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler 处理程序,__BinaryParser serParser,布尔FCHECK,布尔 isCrossAppDomain,IMethodCallMessage methodCallMessage)BIJ System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流 serializationStream,HeaderHandler处理器,布尔FCHECK,布尔 isCrossAppDomain,IMethodCallMessage methodCallMessage)BIJ System.Resources.ResourceReader.DeserializeObject( Int32 typeIndex)
bij System。 Resources.ResourceReader.LoadObjectV2(POS的Int32, ResourceTypeCode & TYPECODE)BIJ System.Resources.ResourceReader.LoadObject(POS的Int32, ResourceTypeCode & TYPECODE)BIJ System.Resources.RuntimeResourceSet.GetObject(String键,布尔 IGNORECASE,布尔isString)BIJ System.Resources.RuntimeResourceSet.GetObject(String键,布尔 IGNORECASE)BIJ System.Resources.ResourceManager.GetObject(字符串 名,CultureInfo的文化,布尔wrapUnmanagedMemStream)BIJ System.Resources.ResourceManager.GetObject(字符串名称)bij STREDIT.frmMain.InitializeComponent()bij STREDIT.frmMain..ctor()
BIJ STREDIT.Program.Main()

我发现它坠毁的地方:

this.Controls.Add(this.statusStrip1); 
this.Controls.Add(this.menuStrip1); 
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); // Here 
this.MainMenuStrip = this.menuStrip1; 
this.MinimumSize = new System.Drawing.Size(726, 220); 

有没有人有一个想法,为什么出现这种情况?

在此先感谢

+0

这就是堆栈跟踪。如果你想要完整的异常,我会建议使用AppDomain.UnhandledException来获取崩溃程序的异常。 http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx – Will 2012-01-29 20:26:53

+0

我现在已经做到了,高。我没有看到任何区别。 – Diamondo25 2012-01-29 20:37:22

+3

您忘记记录异常的InnerException属性。在事件处理程序中使用e.ExceptionObject.ToString()。拍摄臀部时,可能使用了XP不支持的图标格式。 – 2012-01-29 20:54:44

回答

1

Windows XP不支持PNG图标。为应用程序创建一个非PNG图标,并且该应用程序将正常运行:)。

1

图标类型正确与否,有一个解决方案,以正确处理它:

  • 把图标进入议会的资源文件(如果你还没有)
  • 访问图标是这样的:

    this.Icon = global::AEM.UI.Properties.Resources.your_icon_name; 
    
0

我在Win7上(和一个ICO图像)有完全相同的症状,我发现了一个解决方法:在InitializeComponent()之前添加一个小的延迟,让时间让应用程序加载资源。

public MyForm() 
{ 
    Thread.Sleep(100); // delay for loading ressources 

    InitializeComponent(); 
} 

在我的情况,因为它在发展的几个月工作得很好与图像不是由图像格式造成的。这确实是由资源加载器引起的。