C# 如何创建获取文件的多线程方法?
我想创建一个通过文件名获取文件流的方法,希望我的方法可以处理多线程,但失败了。。。我的代码在这里:C# 如何创建获取文件的多线程方法?,c#,.net,C#,.net,我想创建一个通过文件名获取文件流的方法,希望我的方法可以处理多线程,但失败了。。。我的代码在这里: public static class FileHelper { private static object lockObject = new object(); private static Stream fileStream; public static Stream GetFileStream(string filename) { if (fil
public static class FileHelper
{
private static object lockObject = new object();
private static Stream fileStream;
public static Stream GetFileStream(string filename)
{
if (fileStream != null)
return fileStream;
lock(lockObject)
{
if (fileStream != null)
{
return fileStream;
}
fileStream = File.OpenRead(filename);
return fileStream;
}
}
}
可能您正在寻找的是线程安全的单例模式实现。这是一篇关于如何在java中实现这一点的好文章,但在C#中基本相同
“它失败了”并不是一个很好的描述。请记住,如果多个线程试图使用同一个流,它们将相互造成严重破坏。假设一个文件在一个驱动器上,用多个线程读取一个文件通常是一个坏主意。我认为他不想用多个线程来使用同一个流,而是想要一个线程安全类来执行读/写操作?这不一定是同一个流才是一个坏主意。它可能是同一个文件。不清楚:a)问题是什么b)它应该做什么。它似乎是一个线程安全的单例模式。