就在我開始之前,我會對我想要達到的目標進行一個小小的概述,然後我們會回到血淋淋的細節。目前我正在開發一個應用程序,該應用程序將監視用戶註冊表以更改與用戶首選項相關的特定鍵。目前正在使用強制配置文件(不是我的選擇),無論如何,整個想法是將更改記錄到可以在用戶下次登錄時將其寫回用戶註冊表的位置。XML到LINQ問題/ s
此刻,我有系統監視註冊表更改和觸發事件返回已更改的密鑰,值名稱和值。我將這些輸入到一個列表中,以創建一個包含所有數據的單個字符串,然後每隔一段時間將該列表寫入一個文本文件。現在這一切都很好,但我需要改變數據保存的方式,將字符串再次分解爲鍵值,名稱和值,以便回寫註冊表需要太多的開銷,並且還會出現將字符串分解爲唯一可識別的問題時尚。
所以有人建議我去看看XML,這是我以前沒有使用過,我已經開始研究它,這一切看起來很簡單,我也用LINQ之前連接到嵌入式數據庫。我目前努力爭取的頭腦是LINQ如何能夠從XML獲取和處理內存中的數據,因爲我不想經常訪問XML文件,因爲需要將應用程序保持爲快速儘可能。目前,註冊表中的所有更改都被緩存到List(String)中,然後每隔一分鐘左右寫入一個文本文件。
目前我所擁有的是系統在不同的字符串中返回鍵值,名稱和值,將它們收斂到單個List(String)值中,而我將需要的是表或等價表示一個鍵,其中包含多個值名稱,每個值名稱包含一個值,最後是一個類型(這將是一個數字,表示這是什麼類型的註冊表值,REG SZ,REG BINARY等)。 XML文件和程序都是自己的。
還什麼我不太得到的是不同的表,有模式將不存在的數據庫,直到程序第一次運行,因爲它會創建,而不是它已經存在一個新的XML文件。這是由於信息被寫回用戶個人驅動器,因此必須在第一次在用戶機器上運行時創建。
我試過幾個環節和教程等,但一切都沒有點擊,只是還沒有,所以如果你有一個例子或者也許可以解釋給我好一點我們將不勝感激。
我想補充的最後一點是,我目前的想法是將數據存儲在程序中,以創建值列表,嵌入值列表中並嵌入到鍵值列表中的值名稱列表。這聽起來不錯嗎?
現在我知道這是漫長的,那種所有的地方,因此,如果有人可以幫助我們將不勝感激,或者如果您需要澄清的更多信息,請讓我知道,我會盡我所能。
感謝
基本上是這是正確的,我想操縱內存中的數據,然後有一個商店,將被寫入和讀取。 請參閱我習慣於SQL中的LINQ,我有一個現有的數據存儲並使用數據集等。 – manemawanna
您應該忘記在內存中使用XML的想法。請參閱http://www.switchonthecode.com/tutorials/csharp-tutorial-xml-serialization以獲取有關XML序列化如何工作的示例。 – Achim