【发布时间】:2012-10-15 06:00:49
【问题描述】:
public class Logwriter {
public Void WriteXml()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"C:\Log_Data.xml");
XmlElement newelement = xmlDoc.CreateElement("entry");
XmlElement xmldata = xmlDoc.CreateElement("data");
XmlElement xmlcontent = xmlDoc.CreateElement("content");
xmldata.InnerText ="1234" ;
xmlcontent.InnerText ="Stackoverflow";
newelement.AppendChild(xmldata);
newelement.AppendChild(xmlcontent);
xmlDoc.DocumentElement.AppendChild(newelement);
xmlDoc.Save(@"C:\Log_Data.xml");
}}
WriteXml() 函数可以一次被 100 个应用程序调用,所以我必须防止 IOException 错误。 我可以使用锁来避免这些异常,所以我该怎么做。 请解释在编写 xml 期间我必须锁定哪个对象
【问题讨论】:
-
这 100 个应用程序是独立的进程吗?还是您的意思是同一进程中的事物(线程/回调/任务/其他)?
-
100 个不同的进程,你的意思是?如果是这样,
lock不会帮助你,因为那只是在一个进程中。如果您有 100 个不同的进程,为什么不让每个进程写入自己的文件?请注意,这种日志记录(添加单个条目涉及读取到目前为止记录的所有内容)效率非常低。 -
ya 表示 100 种不同的应用程序,可以是 Windows 服务、Web 应用程序、Windows 窗体、Web 服务等
-
@lax winform(传统上是桌面应用程序)和 web-app/web-service(传统上是服务器应用程序)共存会很奇怪......
-
以上函数在 Logwriter 类中,所以我可以在我的所有应用程序中实现这个类...
标签: c# .net multithreading synchronization locking