Постоянное чтение в программу C# динамически изменяющихся данных из Excel (csv)

Тут представлен НЕ рабочий пример цикла для считывания каждые 6000 мс

List List = new List();

        int otv = 1;
        while (otv != 0)
        {
            using (StreamReader sr = new StreamReader("Input.csv"))
            {
                
                //цикл пока не достигли конца файла
                while (sr.EndOfStream != true)
                {
                    //помещаем строку из файла в строковый массив по разделителю, принятому в csv
                    string str = sr.ReadLine();
                    //помещаем в элемент списка новую структуру типа Znachenia 
                    List.Add(new Znachenia() { Znachenie = Math.Abs(Convert.ToDouble(str)) });
                }
                sr.Close();
            }
            
            Thread.Sleep(6000);
        }
    
            foreach (Znachenia Dannie in List)
        {
            MessageBox.Show(Convert.ToString(Dannie)) ;
        }

    }
    public struct Znachenia
    {
        public double Znachenie;
        public override string ToString()
        {
            return Convert.ToString(Znachenie);
        }

    }

Ответы (1 шт):

Автор решения: Andrew
  1. для проверки изменений файловой системы оптимально использовать FileSystemWatcher https://stackoverflow.com/questions/15017506/using-filesystemwatcher-to-monitor-a-directory

  2. Для считывания цсв я советую воспользоваться библиотеку из вижуал бейсика или враппер на нее https://ru.stackoverflow.com/questions/560133/Как-просто-работать-с-открыть-изменить-сохранить-excel-xlsx-csv-файлы/560134#560134

  3. Что бы не считывать слишком часто - желательно делать это не чаще чем условных 3-4 секунды. Мало ли как там запись будет происходить. Если же наверняка контролированная и не слишком частая - то почему бы и не считывать вообще каждый раз как изменяется файловая система. Будь то раз на 2 секунды или раз на час.

  4. Считывать данные лучше в бекграундном потоке. И когда они считались полностью(файл же может быть великоват), только тогда уже переносить их в необходимое место связанное с фронтендом.

→ Ссылка