簡體   English   中英

Windows Phone 7上的Silverlight應用程序中的NullReferenceException

[英]NullReferenceException in Silverlight app on Windows Phone 7

我有一個適用於Windows Phone 7的Silverlight應用程序。此應用程序運行正常,除非用戶對應用程序進行邏輯刪除並嘗試重新激活它。 當他們嘗試對應用程序進行響應時,當我從一個特定頁面對應用程序進行邏輯刪除時,會收到NullReferenceException。 我的挑戰是,我無法一生確定該異常的真正原因。

有誰知道有什么好的免費工具可以幫助我檢查潛在原因? 或者,是否有人可以確定原因。 堆棧跟蹤無濟於事,但無法確定問題在我的代碼中的位置:

   at System.Runtime.Serialization.XmlFormatReader.StoreCollectionValue(Object& collection, Object value, CollectionDataContract collectionContract)
   at System.Runtime.Serialization.XmlFormatReader.LoadValueOfCollection(DeserializedObject desObj, Object value, Int32 membersRead, Type itemType)
   at System.Runtime.Serialization.XmlFormatReader.ReadGetOnlyCollectionItem(DeserializedObject desObj, CollectionDataContract collectionContract, Int32 membersRead)
   at System.Runtime.Serialization.XmlFormatReader.ReadGetOnlyCollection(DeserializedObject desObj, CollectionDataContract collectionContract, Int32 membersRead)
   at System.Runtime.Serialization.XmlFormatReader.Deserialize(XmlObjectSerializerReadContext context)
   at System.Runtime.Serialization.XmlFormatReader.InitializeCallStack(DataContract clContract, XmlReaderDelegator xmlReaderDelegator, XmlObjectSerializerReadContext xmlObjContext, XmlDictionaryString[] memberNamesColl, XmlDictionaryString[] memberNamespacesColl)
   at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
   at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader)
   at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract)
   at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
   at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName)
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName)
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlDictionaryReader reader)
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObject(Stream stream)
   at Microsoft.Phone.Shell.StreamPersister.Deserialize(Byte[] blob, IEnumerable`1 knownTypes, IDictionary`2& dictionary)
   at Microsoft.Phone.Shell.StreamPersister.Load(ShellPageManager shellPageManager, String key, IEnumerable`1 knownTypes, IDictionary`2& dictionary)
   at Microsoft.Phone.Shell.PhoneApplicationService.FireActivated()
   at Microsoft.Phone.Execution.NativeEmInterop.FireOnResume()

似乎是某種序列化問題。 但是,我不知道會導致什么問題。 謝謝!

嘗試在Application_Activated事件處理程序中使用斷點進行調試。 重新激活應用程序時,某些內容可能為空:

private void Application_Activated(object sender, ActivatedEventArgs e)
{
   //insert a breakpoint here

如果您懷疑序列化問題,則可以輕松地檢查已加載數據的內容,例如

using (var fs = isoStore.OpenFile(StoragePath, System.IO.FileMode.Open))
{
    StreamReader sr = new StreamReader(fs);
    string content = sr.ReadToEnd();
    // Put a break point here and show content variable in Xml Visualizer.
    // Can be done from Locals Debug window for example.
}

但是我將從檢查您的應用邏輯開始。 最有可能尚未初始化的內容。 應該很容易在調試器中找到。

今天早上我遇到了同樣的問題。 我的問題與基本數組的使用有關。 我將數組更改為ObservableCollection並且可以正常工作。 我已經在此博客上用代碼詳細說明了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM