File.ReadAllText线程安全吗?

Lia*_*iam 8 c# file-io web-services task-parallel-library

具体来说,将使用TPL生成一个线程Task.Factory.StartNew:

Task.Factory.StartNew(() => {
       File.ReadAllText(@"thisFile.txt");
});
Run Code Online (Sandbox Code Playgroud)

引起任何问题等?在MSDN资源上似乎没有提到线程安全性

它位于SOAP Web服务环境中.

请注意,我不想知道在网络环境中使用任务的专业和缺点.我完全了解这些问题,理所当然地认为在我的情况下这个模型是合理的,谢谢.

Jon*_*eet 12

没关系 - 假设没有任何内容同时写入文件,在这种情况下,您可能无法打开文件(或者可能看不到部分写入).

根据以下文件File:

此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的.任何实例成员都不保证是线程安全的.

(不是说可以有任何实例方法,因为它是一个静态类......)


Mar*_*ell 7

是的,这本身就是线程安全的; 但是,它仍然遵循文件系统的通常规则:对同一文件的并发访问取决于竞争句柄使用的标志.如果任何句柄标记为独占访问,则它将失败并出现与IO相关的异常.