Считывание файла по строкам с использованием таймера (Console) - C#

Узнай цену своей работы

Формулировка задачи:

Привет. Есть текстовый файл, содержащий некую информация. Его требуется вывести по строкам, каждую строку через определенное время (в моем случае полсекунды). Т.е. если файл содержит, например:
12345
678910
abcde
xyz123
То первой должна выводится строка 12345, через полсекунды 678910 и т.д. пока не дойдет до конца файла (в моем случае до конца 4 строки).
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]);
        }
    }
}
В таком случае у меня считывает все строки сразу. Была идея, конечно, считывать по строке и потом писать n++, но тогда возникают трудности, если размер файла, скажем, 20-30 строк. Собственно вопросы: 1) как мне в строке while (n != 6); определить конец файла (помню в vb.net было EOF); 2) как все-таки сделать правильный вывод всего этого дела в консоль. Заранее спасибо всем)

Решение задачи: «Считывание файла по строкам с использованием таймера (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;
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы