Считывание файла по строкам с использованием таймера (Console) - C#
Формулировка задачи:
Привет. Есть текстовый файл, содержащий некую информация. Его требуется вывести по строкам, каждую строку через определенное время (в моем случае полсекунды). Т.е. если файл содержит, например:
То первой должна выводится строка 12345, через полсекунды 678910 и т.д. пока не дойдет до конца файла (в моем случае до конца 4 строки).
В таком случае у меня считывает все строки сразу. Была идея, конечно, считывать по строке и потом писать n++, но тогда возникают трудности, если размер файла, скажем, 20-30 строк. Собственно вопросы:
1) как мне в строке while (n != 6); определить конец файла (помню в vb.net было EOF);
2) как все-таки сделать правильный вывод всего этого дела в консоль.
Заранее спасибо всем)
12345 678910 abcde xyz123
public class MyTimer
{
static int n = 0;
public static void Main()
{
System.Timers.Timer tmr = new System.Timers.Timer();
tmr.Elapsed += new ElapsedEventHandler(OnTimedEvent);
tmr.Interval = 500;
tmr.Enabled = true;
while (n != 4) ;
}
public static void OnTimedEvent(object source, ElapsedEventArgs e)
{
string[] a = File.ReadAllLines(@"D:\text1.txt");
for (n = 0; n < 4; n++)
{
Console.WriteLine(a[n]);
}
}
}Решение задачи: «Считывание файла по строкам с использованием таймера (Console)»
textual
Листинг программы
namespace DelayFileRead
{
class Program
{
private static StreamReader reader;
static void Main(string[] args)
{
reader = new StreamReader(@"D:\temp\codegen\some.cs");
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += Timer_Elapsed;
timer.Interval = 500;
timer.Enabled = true;
while (reader != null)
Thread.Sleep(100);
Console.WriteLine();
Console.WriteLine("Press any key for exit ...");
Console.ReadKey(true);
}
private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
var line = reader.ReadLine();
if (line != null)
Console.WriteLine(line);
else
{
(sender as System.Timers.Timer).Enabled = false;
reader.Close();
reader = null;
}
}
}
}