2个线程,1个文件



既然这不能这么容易解决,我怎么能实现一个线程,字符串到文件/缓冲区一行一行使用Console.WriteLine()和另一个线程,读取这些字符串从同一文件/缓冲区也行逐行?我想我需要:

  • 重定向控制台到文件/缓冲区
  • 读取文件/缓冲线程保存,当一行写入时,必须由另一个线程读取
  • 使其异步(没有ReadToEnd(),它必须是live)

尝试内存映射文件它将允许您从多个线程读写一个共享文件。关于重定向控制台,请尝试:

控制台。装入的

控制台。一套

我想用缓冲区来做到这一点。

解决方案文件:

    class Program
    {
        private static bool terminated = false;
        private static void listen()
        {
            StreamReader file = new StreamReader(new FileStream("C:/test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
            while (!terminated || !file.EndOfStream)
                if (!file.EndOfStream)
                {
                    string text = file.ReadLine();
                    MessageBox.Show(text); // display it
                }
        }
        static void Main(string[] args)
        {
            StreamWriter sw = new StreamWriter(new FileStream("C:/test.txt", FileMode.Create, FileAccess.Write, FileShare.Read));
            sw.AutoFlush = true;
            Console.SetOut(sw);
            new Thread(new ThreadStart(listen)).Start();
            for (int i = 0; i < 10; i++)
            {
                Thread.Sleep(250);
                Console.Out.WriteLine("hello world - " + i);
            }
            terminated = true;
        }
    }

逐行工作,不遗漏任何一行

相关内容

  • 没有找到相关文章

最新更新