2016-11-14 52 views
0

我有一個UWP應用程序,可以在暫停期間保存當前頁面狀態。對於特定的頁面,它只保存幾個模型。狀態文件是大約。 50 - 60 kb。但是,對於某些用戶來說,保存當前狀態並且系統終止我的應用程序需要很長時間。如何在狀態保存時間過長時檢測真正的終止狀態?

我可以在事件查看器下看到日誌。所以我很確定這是因爲儲蓄需要很長時間。我試圖使用ExtendedExecution,但即使它也沒有幫助。

有沒有什麼方法可以檢測爲什麼它需要太長時間或某種方法給我更詳細的保存狀態信息?

它只發生在一些用戶,而不是每個用戶,我很確定我正在保存的模型不是負載很大的運行計算機。順便說一下,我正在使用Prism的MVVM模式。

+0

50kb的狀態已經相當多了。所有這些都是必要的還是例如保存一個足以恢復狀態的ID?但即使如此,這不應該花太長時間。你有回購,我們可以看到幫助發現問題? – Bart

+0

不幸的是,我不能分享回購,因爲它是一個公司的應用程序。對於大部分的保存部分,我使用的是像Guid這樣的系統類型。我必須保存一些在運行時指令下定義的模型。 我會盡量將所有內容保存爲系統類型並儘快分享結果。我只是想知道有什麼方法可以從系統終止中獲得更多信息。 –

回答

0

那麼......經過對有問題的設備進行詳細調查後,我發現NetworkInformation類一般會凍結系統。這個凍結還會影響我的應用程序,並且最終與IO有關的所有內容都會在此期間凍結。

事實證明,這是某種網卡驅動程序的問題。無論何時用戶將3G調制解調器插入USB端口,任何使用NetworkInformation(包括Windows設置本身)類的活動都將被凍結。就我而言,我認爲這是一個國家服務問題(最終還是)。儘管實際上並非如此。

1)用戶插入設備並開始使用應用程序。 2)凍結髮生後,他離開並鎖定設備。 3)當用戶回來並解鎖屏幕時,網卡驅動程序被激活並通知使用NetworkInformation的所有內容。 4)在解鎖期間,應用程序嘗試恢復狀態,但由於一般的凍結狀態而無法真正做到。 5)Windows確定我的應用程序無法恢復狀態並終止它。

爲了獲得更好的信息,該設備是在Windows 10上運行的HP Elite X2,問題全在於3G-4G USB調制解調器。這在Wifi上看起來都很好。這似乎是設備本身的網絡驅動程序問題,但我一直討厭NetworkInformation要麼...