我正在开发wpf应用程序,有一部分应该重复多次,实际上是关于打印文档,
每当用户点击打印时,它都会被执行,因此一些信息如PrinterName,Paths等我存储在XML文件中,
我想知道因为这个动作会重复多次最好将它存储到全局变量中,并且只设置一次(例如App.xaml
文件中{ {1}}方法)并在我需要的任何时候使用它,也许它比每次从我的XML读取它更快?
这是一个代码示例:
使用XML的解决方案:
Application_Startup
全局变量解决方案:
//call code below everytime user wants to print document
Printer printer = new Printer();
printer.AdressAnswer = Globals.ReadValueFromXML("answeraddress");
//ReadValueFromXML is my method which is returning value from xml and is defined below
public static string ReadValueFromXML(string nodeName)
{
try
{
XPathDocument doc = new XPathDocument("C:\\ApplicationSettings.xml");
XPathNavigator nav = doc.CreateNavigator();
// Compile a standard XPath expression
XPathExpression expr;
expr = nav.Compile(@"/settings/" + nodeName);
XPathNodeIterator iterator = nav.Select(expr);
// Iterate on the node set
while (iterator.MoveNext())
{
return iterator.Current.Value;
}
return string.Empty;
}
catch
{
//do some error logging here. Leaving for you to do
return string.Empty;
}
}
和
Printer printer = new Printer();
printer.AdressAnswer = Globals.PathToFolder;
将在
中预先设置 Globals.PathToFolder
现在我想知道哪种解决方案更好,为什么?
答案 0 :(得分:1)
当然,(至少在理论上)每次都不能从文件中读取XML值。这种性能优势在实践中是否真正重要是另一个问题。您需要执行性能测试/测量才能找到答案。
如果值不会改变,您可以阅读它们一次,并在应用程序的生命周期内将它们存储在内存中。它是内存使用和方法执行时间之间的权衡。
但是你可以从正在读取值的类的静态构造函数中调用ReadValueFromXML
方法一次,并将valuess存储在某个静态类中,然后在" real& #34;打印方法。
答案 1 :(得分:0)
我相信你正在寻找App.config和Appsetting
这样您就可以在启动项目的app.config中存储文件路径:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<appSettings>
<add key="PathToFolder" value="C:\\ApplicationSettings.xml" />
</appSettings>
</configuration>
并在您的代码中访问它
string pathToFolder = System.Configuration.ConfigurationManager.AppSettings.Get("PathToFolder") ;