这个代码是否被认为是线程安全的,即使多个线程可能同时在网络服务器上查询目录中的文件?
谢谢, 麦克
//Get a testimonial
virtualRoot = HostingEnvironment.ApplicationVirtualPath;
configuration = WebConfigurationManager.OpenWebConfiguration(virtualRoot);
pathToNewsDirectory = configuration.AppSettings.Settings["VanHinoWeb.news.dir"].Value;
fileListing = Directory.GetFiles(pathToNewsDirectory, "*xml");
int index = generator.Next(0, fileListing.Length);
//Put it into XML and get data into string array to return
testimonialReader = new XmlTextReader(fileListing[index]);
testimonialReader.ReadToFollowing("quote");
testimonialData[0] = testimonialReader.ReadString();
testimonialReader.ReadToFollowing("author");
testimonialData[1] = testimonialReader.ReadString();
testimonialReader.ReadToFollowing("authorTitle");
testimonialData[2] = testimonialReader.ReadString();
return testimonialData;
}
答案 0 :(得分:0)
Get a testimonial
评论下的大多数调用应该是线程安全的。访问托管环境,应用程序设置和列出目录内容应该没问题。
但是,不清楚创建generator
对象,testimonialReader
和testimonialData
对象的位置以及它们是否跨线程共享。如果它们在线程之间共享,那么代码就不是线程安全的。
答案 1 :(得分:0)
由于您只是在阅读文件,因此它看起来是线程安全的。您还需要在使用完毕后关闭XmlTextReader(testimonialReader
)。