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)它应该做什么。它似乎是一个线程安全的单例模式。