线程安全我的方法

时间:2009-10-16 20:47:50

标签: asp.net thread-safety

这个代码是否被认为是线程安全的,即使多个线程可能同时在网络服务器上查询目录中的文件?

谢谢, 麦克

    //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;
}

2 个答案:

答案 0 :(得分:0)

Get a testimonial评论下的大多数调用应该是线程安全的。访问托管环境,应用程序设置和列出目录内容应该没问题。

但是,不清楚创建generator对象,testimonialReadertestimonialData对象的位置以及它们是否跨线程共享。如果它们在线程之间共享,那么代码就不是线程安全的。

答案 1 :(得分:0)

由于您只是在阅读文件,因此它看起来是线程安全的。您还需要在使用完毕后关闭XmlTextReader(testimonialReader)。