我需要爲我的服務使用XML來讀取一旦運行後可以更改的值,並且我只能找到有關當前XML設置存在問題的人的來源,來到它的初學者。在Windows服務中使用.xml c#
任何人都可以簡單地解釋如何在設計Windows服務時開始使用XML,或者指向一個初學者可以理解的良好源代碼的方向嗎?
謝謝
我需要爲我的服務使用XML來讀取一旦運行後可以更改的值,並且我只能找到有關當前XML設置存在問題的人的來源,來到它的初學者。在Windows服務中使用.xml c#
任何人都可以簡單地解釋如何在設計Windows服務時開始使用XML,或者指向一個初學者可以理解的良好源代碼的方向嗎?
謝謝
Xml與windows服務無關。
有幾種方法可以在c#中使用一個簡單的一個是XmlDocument類。
如
XmlDocument configDoc = new XmlDocument();
configDoc.Load("ServiceConfig.xml");
XmlNode pollingNode = configDoc.DocumentElement.SelectSingleNode("PollingInterval");
if (pollingNode != null)
{
/// Grab pollingNode.InnerText, convert to an int and set Property...
}
以上假設XML是
<Config>
<PollingInterval>30</PollingInterval>
</Config>
你這個大問題是你要去哪裏把文件,處理它被損壞,一些halfwit鎖定你出它,它被刪除...
我想這個想法之前,先想一想。
我還會怎樣改變服務在運行時運行的方式? – user345453 2013-03-19 17:45:41
@BenAshton是否有他們需要在運行時執行此操作的原因?許多應用程序要求您更改app.config文件,然後重新啓動服務以使更改生效。如果需要,有很多方法可以在運行時更改它。您可以提供一個GUI作爲單獨的可執行文件,通過WPF與服務進行通信。 – 2013-03-19 18:00:12
@JohnKoerner似乎已經回答了這一問題。文件很簡單,甚至可以作爲原型的一個好的開始,但通過一個接口來實現它,然後你可以使用一些你不需要處理的東西,它被丟失/破壞或者恐怖的部分編輯。 – 2013-03-19 18:31:09
如果您願意,可以使用XML序列化。這是假定一個名爲Demo.xml在輸出目錄中的文件:
string filePath = ".\\Demo.xml";
private void Form1_Load(object sender, EventArgs e)
{
ReadSettings();
}
void ReadSettings()
{
XmlSerializer s = new XmlSerializer(typeof(Settings));
Settings newSettings = null;
using (StreamReader sr = new StreamReader(filePath))
{
try
{
newSettings = (Settings)s.Deserialize(sr);
}
catch (Exception ex)
{
Debug.WriteLine("Error:" + ex.ToString());
}
}
if (newSettings != null)
this.Text = newSettings.WatchPath;
}
public class Settings
{
public string WatchPath { get; set; }
}
XML格式:
<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<WatchPath>C:\Temp</WatchPath>
</Settings>
我明白了,我的意思是說我可以做更多的事情 - 例如,我可以更改xml中可變參數的值,我將如何做到這一點? – user345453 2013-03-19 18:51:40
什麼確切的是你面對試圖在Windows服務中使用XML時有困難嗎? – NoviceProgrammer 2013-03-19 17:40:39
Xml對Windows Service沒有仇恨,對其他類型的項目沒有偏見。發佈你想要用Xml做什麼以及你面臨什麼確切的問題。 – publicgk 2013-03-19 17:44:33
你有一個app.config的值進入? – 2013-03-19 17:58:54