C#文件流在线程中关闭

dif*_*jin -2 c# filestream

main(string[] args) {
    string file = @"D:\123.txt";

    using (FileStream f = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
    {
        f.Position = 0;
        StartReadBookThread(f);
    }   
}
//this is a public API for user
public static Thread StartReadBookThread(Stream stream)
{
    Console.WriteLine("CanSeek:" + stream.CanSeek);
    var t = new Thread(() => DoReadBook(stream));
    t.Start();
    return t;
}

private static void DoReadBook(Stream stream)
{
    Console.WriteLine("CanSeek:" + stream.CanSeek);
}
Run Code Online (Sandbox Code Playgroud)

DoReadBook方法中,流变为关闭,CanSeek变为假。
如果我想在线程中读取流,如何处理它,一般的方法是我们为用户提供一个公共 API StartReadBookThread 并在线程中运行。用户我们总是喜欢以建议 using(){} ... 方式调用参数文件流。那么我们如何才能更好地读取文件。你知道我们只是在一个线程中完成它,有时它可能会被关闭。

InB*_*een 5

您的流在StartReadBookThread返回时被处理,并且您}main.

您的工作流程基本上是:

  1. 买一台割草机(FileStream)。
  2. 请工人修剪草坪 ( Thread)。
  3. 立即归还割草机(using声明)。
  4. 期望工人继续用您不再拥有的割草机割草(错误的期望)。