2014-02-10 51 views
0

WP8上Application_Launching方法的時間/線程究竟是什麼?具體來說,關於UI加載/渲染序列?Application_Launching timing

我有一些地方全局初始化正在內Application_Launching做了一個應用程序。我從開始頁面的XAML上的數據綁定期間調用的方法中獲取崩潰報告;該崩潰與所述全局初始化未發生一致。

編輯:我正在調用一個本地(C++)方法,它將一個文件讀入一個全局變量中的malloc ated內存塊,該變量初始化爲null。所述變量作爲崩潰報告的一部分被丟棄;我有一個報告,它是空的。

粘貼代碼將是毫無意義的恕我直言。

+0

你能描述你正在做的這個全局初始化嗎?你能否提供一些代碼 –

回答

1

當啓動應用程序時,Launching事件引發。然而,應用程序可以在稍後處於休眠狀態,這個過程稱爲「墓碑式」。當墓碑式的應用程序恢復時,它不會引發Launching事件,而是引發Activated事件。你很可能忘記處理這個案子。

輕鬆測試它,去在您的Windows Phone項目的屬性,在調試選項卡,「一旦去激活墓碑在調試時」檢查的選項。從那裏開始,每次在調試器連接時停用應用程序(通常在按模擬器上的主頁按鈕時),該應用程序將被邏輯刪除,並且可以確保在切換回它時正確恢復。

+0

+1我同意OP很可能面臨這個問題而不是時間。另一方面 - 這些案件也應該進行測試和處理。 – Romasz

+0

墓碑不會消除全局狀態,上次我檢查過。在這種情況下,「全局」意味着本地子系統中的全局變量。 –

+0

@SevaAlekseyev無論如何,它只需要五分鐘就可以在模擬器中進行測試 –

0

我有另一種理論。這不是關於在錯誤的時間加載庫,這是關於庫卸載。由於幾乎所有的本地函數都是靜態的,並且狀態是全局的,所以沒有活動的本地對象,並且COM子系統在模塊上具有零引用計數。根據COM規則,像這樣的模塊是隨時可以卸載的公平遊戲。在後續的本地函數調用中,庫被重新加載,但全局狀態消失。

從下一個版本,我會繼續爲應用程序的生命週期有一個活本地對象。我們會看看崩潰是否會回來。

相關問題