2012-12-18 65 views
2

我想找到一種方法來找回我以前的變量的值,以便我可以恢復我的應用程序以前的運行狀態,然後在它手動崩潰時手動重新啓動它。我目前正在使用保存在項目文件夾中的'config'文件。有一個更好的方法嗎?在程序崩潰後找回變量

我想保存的代碼的一些小部分。

if (EventID == WIA.EventID.wiaEventItemCreated) 
     { 
      if (d != null) 
      { 
       foreach (Property p in d.Properties) 
       { 
        if (p.Name.Equals("Pictures Taken")) 
         Console.WriteLine("Taken"); 
       } 

       wiaImageFile = (WIA.ImageFile)(d.Items[d.Items.Count].Transfer(FormatID.wiaFormatJPEG)); 
       wiaImageFile.SaveFile(Properties.Settings.Default.FolderNameRaw + "\\" + imageCount + ".jpg"); 
       imageCount++;//I want to save this count so that I can continue the sequence even after the application crashes 
       Pluck.Default.PhotoExistsInDirectory = true; 
       FacebookControls fbc = new FacebookControls(); 
       if(Properties.Settings.Default.UseFB == true) 
        fbc.UploadPhotos(); 


      } 
     } 
+0

這是一個網站/網絡應用程序? – sll

+0

我相信一個好主意是從文件夾內容中讀取文件並確定哪個是最後創建的文件。之後你可以分割文件名,然後獲得計數器的值。 –

+0

Dekstop應用程序,用於處理一些圖像,一個photobooth應用程序。 – Bocky

回答

1

配置文件是一個很好的答案。您的其他選項通常是註冊表或數據庫,但我認爲配置文件是更安全的選項。

關於堅持這些信息的事情是它可能會再次導致錯誤,如果是這樣的話,你會希望能夠輕鬆地丟棄它。一個文件(當然存儲在用戶設置空間中)也許是這樣做的方式。如果需要,您可以指示用戶刪除該文件。對於用戶訪問註冊表或數據庫來說,這是一個更復雜的修復方法。另外,你應該把你的狀態包含在一個合適的對象中,並且構建初始化邏輯來初始化狀態對象並且具有不加載配置文件的機制。

+0

我現在正在使用VS中的Settings.setting。但即使在使用Settings.Default.Save()後,它似乎也不會永久保存我的值。所以最好繼續使用配置文件? – Bocky

+0

設置的範圍是什麼?是用戶還是應用程序?如果它是應用程序,當您的應用程序失敗時,您的設置將不會保存。 – Arie

+0

大多數用戶。如果我使用用戶設置,那麼即使關閉應用程序並重新啓動它,它也會被保存。 – Bocky

0

我使用配置文件。我還有一個全局異常處理程序,它捕獲任何異常並提供在應用程序關閉前保存任何文件(包括用戶正在處理的文件)的機會。

我也同意C Ross的觀點,你可能會堅持導致應用程序失敗的數據。另一個不會讓你馬上回來的選擇是使用定時器或後臺進程定期保持設置。我使用這個備份有點像Windows中的系統恢復功能。