Как обновить содержимое DataGridView по таймеру?

#c# #csv #datagridview

Вопрос:

Я читаю файл csv , а затем загружаю значения этого csv в представление данных. Это работает , но теперь , когда я пытаюсь обновить содержимое представления данных через заданный интервал, оно не обновляется, причина обновления в том, что файл csv обновляется новыми значениями из другой программы, поэтому , когда файл csv обновляется, представление данных не обновляется.

Вот мой код :

 namespace ST_4
{
    public partial class Watchlist : Form
    {string fileName;
        string AppDataPath;
        string MQFiles;
        public Watchlist()
        {
            InitializeComponent();
            Watchlist_Load();
        }

        public void timer2_Tick(object sender, EventArgs e)
        {
            dataGridView2.Update();
            dataGridView2.Refresh();
            Application.DoEvents();
        }

        public void Watchlist_Load()
        {
            AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            MQFiles = AppDataPath   "\Files";
            List<ElementsWatch> records;
            using (var reader = new StreamReader(MQFiles   "\Watchlist.csv"))
            using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                records = csv.GetRecords<ElementsWatch>().ToList();
            }
            dataGridView2.DataSource = records;
        }
    }
}
 

Я совсем новичок в C#, поэтому я все еще пытаюсь и тестирую, но, прочитав несколько статей, я подумал dataGridView2.Update() amp; dataGridView2.Refresh() , что следует обновить содержимое datagridview ? является ли это предположение неверным ?

Комментарии:

1. Как обновить ? какого поведения вы ожидаете ? Вы изменяете csv-файл и ожидаете обновления в пользовательском интерфейсе ?

2. Что-нибудь обновляет содержимое DataSource для представления данных? Это не изменит то, что отображается в пользовательском интерфейсе, если базовые данные не изменились.

3. Да, если это возможно ? Я ожидаю, что когда в csv-файл будет добавлено больше данных, то datagridview также должен отображать эти недавно добавленные данные ?

4. @Andrew H нет , источник не обновляется, будет ли обновление источника перезагружать весь DataGridView? Или он просто добавит новый контент, если таковой будет?

5. У вас есть две вещи, конкурирующие за вашу сетку данных, поэтому нет волшебного способа сделать это, не прибегая к сложной синхронизации. При этом, как предполагается, что конечный пользователь будет взаимодействовать с сеткой, в которую каждые три секунды записываются данные? Это непрактично. Я бы просто добавил кнопку, которая перезагружает данные по запросу пользователя.