2011-04-27 91 views
0

我使用獨立存儲獲得了一些意外的行爲。在這種情況下,我使用它來維護墓碑的目的。使用獨立存儲在WP7上發生意外的行爲

這是一個火腿收音機許可考試練習應用程序。這是發生了什麼。當應用程序第一次運行時,用戶在MainPage上,並選擇兩個鏈接中的一個,即OptionPage1或OptionPage2(它們的工作方式相似,因此我只關注其中一個)。在OptionsPage1上,用戶從多個選項中進行選擇,然後單擊Launch按鈕進入ExamPage,用戶在這裏回答問題。完成考試後,用戶轉到ScorePage查看分數。完成此操作後,其中一個選項是單擊一個按鈕返回到MainPage。

每次用戶選擇某個操作時,隔離存儲中的文件都將使用靜態方法在獨立存儲處理類庫中進行更新。我觀察到一個非常奇怪的行爲。當用戶點擊返回到MainPage時ScorePage保存其狀態時,它將位置存儲爲「MainPage」,因爲這是用戶將在下一毫秒中的位置。但是,當MainPage讀取由ScorePage保存的獨立存儲文件時,它不具有ScorePage保存的相同內容!它有由OptionPage1保存的內容!我知道ScorePage正確保存信息,因爲我在保存後立即嘗試讀取它,並且確定。

它幾乎看起來可能有不同版本的文件被創建和更新。但這沒有意義。每個頁面使用完全相同的靜態方法來保存和更新獨立的存儲文件,並且只有一個文件夾和文件名。我很困惑。

+1

如果不能看到代碼,將很難說出可能發生的事情。您可以發佈您的幫助器方法,並演示它們在應用的不同頁面中的使用方式。 – 2011-04-27 07:33:58

+0

這可能是一種競爭條件嗎?你是否異步保存? – PhilChuang 2011-04-27 14:50:49

回答

0

Cyber​​herbalist,我如果用你這個(我假設你或你的應用程序會遇到一些嚴重的問題與導航),有一個與Non-Linear Navigation Service工作時疑難雜症我不知道。基本上如果你使用事件處理程序保存到文件OnNavigatedTo或在某些情況下OnNavigated從你寫在你以前保存的內容之上。換句話說,所有的服務都在調用GoBack()方法,在這種情況下,您將再次保存該文件的方法。

繼承人它的工作原理:

首頁 - > OptionsPage - > ExamPage - > ScorePage

現在,當您導航回到主頁,這是真的發生了什麼:

首頁< - OptionsPage < - ExamPage < - ScorePage

如果是這種情況,請在App.xaml.cs文件中創建一個全局變量,用於存儲是否已完成考試。然後轉到任何頁面保存內容,並檢查「if」語句以確定您是進入進程中的下一頁還是導航回主頁。還要確保在您保存到ScorePage上的文件後,您可以設置完成考試的全局變量。