2013-01-07 40 views
0

由於this不能這麼容易解決的我怎麼能實現1個線程寫入字符串使用Console.WriteLine()線文件/緩衝線和另一個線程讀取那些相同的字符串文件/緩衝區也一行一行?我想我需要:2個線程,1個文件

  • 重定向控制檯文件/緩衝
  • 讀文件/緩衝線程保存,當行寫它必須由另一個線程
  • 使異步讀取(無ReadToEnd() ,它必須是現場
+0

這是一個有點臭的要求:你能描述一下你試圖實現的第一個例子嗎? –

+0

Soner,我建議你看看一些併發概念,也許你會通過使用監視器或信號量來達到你的目標。乾杯。 –

+0

爲什麼要使用文件? – Jodrell

回答

0

我想這樣做與緩衝雖然。

解決方案與文件

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; 
     } 
    } 

作品一行一行地不會錯過一個。

相關問題