2012-02-26 158 views
0

我剛剛開始學習C#, 但我正面臨着一種情況。在循環中讀取XML文件

可以說,我有這個XML文件,它由1Hz刷新率的應用程序生成。 所以我需要C#來連續解析這個文件,直到點擊一個按鈕來停止這個動作。

這是我的權利,我從幾個地方拿起

XmlDocument xml = new XmlDocument(); 
xml.Load("data.xml"); 
XmlNodeList xnList = xml.SelectNodes("/LiveData/Name"); 
int count = 1; 
foreach (XmlNode xn in xnList) 
{ 
string Name = xn["Name"].InnerText; 
string Value= xn["Value"].InnerText; 
Console.WriteLine("Values: {0} {1}", Name, Value); 
count = count + 1; 
} 

所以這樣做一次,但現在,我想要做的是一個代碼,可以說,我有兩個按鈕命名爲「啓動和停止」,一旦啓動,循環應該繼續讀取文件,因爲文件會在1秒內更新,然後當我單擊「停止」按鈕時,整個過程應該停止。

此外,我需要將這個值存儲在數據庫中,所以你認爲每秒鐘在MySql中插入這個值會是一個不好的選擇嗎?

請幫

+1

也許你可以通過使用'FileSystemWatcher'來避免連續讀取該文件(http://msdn.microsoft.com/fr-fr/library/system.io.filesystemwatcher%28v=vs.100%29.aspx) ? – remio 2012-02-26 13:56:10

回答

1

如果你確定要讀取的文件每一秒,並且不使用FileSystemWatcher作爲remio建議,你應該使用一個計時器。在.Net中有幾個定時器可用。你應該選擇哪一種取決於你有什麼樣的應用程序(Winforms或WPF)。

每秒插入值到數據庫應該不成問題。但是,你應該準備好處理這些數據量,如果你持續這麼做了幾個月,它會變成千兆字節。

+0

謝謝,我在想Backgroundworker類.. – 2012-02-27 01:04:17