У меня есть база данных SQLite, и у меня есть приложение Windows Form.В этой форме есть DataGridView
, в котором есть 4 столбца.Я использовал таймер для обновления моего DataGridView
содержимого.
Но каждый раз, когда я очищаю DataGridView
, я заполняю его, потому что мне нужно отсортировать их по дате.Если я не использую .Rows.Clear()
и .Refresh
, он добавляет один и тот же контент снова и снова.Поэтому я использую их.
Я использую другой способ, например, строки комментариев, но проблема заключается в
system.invalidoperationexception cross-thread operation not valid
Я перепробовал все решения StackOverflow и весь Интернет, но все же дает мое одно и то же исключение.
В чем моя проблема.Я вызвал этот метод напрямую, и я назвал его как поток, он дал мне то же исключение.Это дает мне исключение, когда я использую DataGridView
.Например, в этом блоке кода он дает dgwIslemGemisi.DataSource=dt;
private void guncellemeIslemGecmisiGoster()
{
dt = db.TumGuncellemeIslemGecmisiGetir();
dgwIslemGecmisi.DataSource = dt;
dgwIslemGecmisi.Update();
dgwIslemGecmisi.Rows.Clear();
dgwIslemGecmisi.Refresh();
////Set AutoGenerateColumns False
//dgwIslemGecmisi.AutoGenerateColumns = false;
////Set Columns Count
//dgwIslemGecmisi.ColumnCount = 4;
////Add Columns
//dgwIslemGecmisi.Columns[0].Name = "islemAdi";
//dgwIslemGecmisi.Columns[0].HeaderText = "İşlem Adı";
//dgwIslemGecmisi.Columns[0].DataPropertyName = "islemAdi";
//dgwIslemGecmisi.Columns[1].HeaderText = "İşleme Başlangıç Tarihi";
//dgwIslemGecmisi.Columns[1].Name = "islemBaslangicTarihi";
//dgwIslemGecmisi.Columns[1].DataPropertyName = "islemBaslangicTarihi";
//dgwIslemGecmisi.Columns[2].Name = "islemBitisTarihi";
//dgwIslemGecmisi.Columns[2].HeaderText = "İşlemin Tamamlanma Tarihi";
//dgwIslemGecmisi.Columns[2].DataPropertyName = "isleminBitisTarihi";
//dgwIslemGecmisi.Columns[3].Name = "islemDurumu";
//dgwIslemGecmisi.Columns[3].HeaderText = "İşlem Durumu";
//dgwIslemGecmisi.Columns[3].DataPropertyName = "islemDurumu";
//dgwIslemGecmisi.DataSource = dt;
//for (int i = 0; i < dt.Rows.Count; i++)
//{
// string durum = "Başarısız";
// if (dt.Rows[i]["islemDurumu"].ToString() == "1")
// {
// durum = "Başarılı";
// }
// dgwIslemGecmisi.Rows.Add(new object[] {
// dt.Rows[i]["islemAdi"].ToString(),
// dt.Rows[i]["islemBaslangicTarihi"].ToString(),
// dt.Rows[i]["islemBitisTarihi"].ToString(),
// durum
// });
//}
dt.Dispose();
}