2012-01-29 196 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(); 
} 

在我的情況,因爲它在發展的幾個月工作得很好與圖像不是由圖像格式造成的。這確實是由資源加載器引起的。