У меня есть элемент управления winform Datagridview в моей форме при загрузке, я заполняю почти 1000 и более записей. Каждые несколько секунд данные извлекаются с моего сервера sql и должны быть заполнены в сетке. Я не хочу, чтобы моя сетка замерзла. Пожалуйста, помогите мне с этим.....
Заполнение данных в Gridview с помощью Thread
Ответы (2)
- Поместите код населения в метод.
- Поместите цикл в метод, чтобы он выполнялся до тех пор, пока логическая переменная не будет установлена в значение TRUE.
- Создайте объект потока, который вызывает этот метод.
- Запустите объект потока.
- Когда методу необходимо обновить сетку, вы ДОЛЖНЫ использовать DELEGATE и метод DataGridView.Invoke для обновления сетки; в противном случае вы получите ошибки потоковой передачи.
- Если вы хотите отменить поток, установите для переменной значение TRUE.
person
Marc Johnston
schedule
09.03.2011
Просто используйте таймер, и когда он тикает, создайте новый поток и обновите файл DataGrid
.
Пример с Windows Forms и TPL (.NET Framework 4 и 3.5).
Инициализируйте таймер:
this.timer = new Timer() { Interval = 2000 };
this.timer.Tick += OnFetch;
this.timer.Start();
Управление тиковым событием:
private void OnFetch(object sender, EventArgs e)
{
Task.Factory.StartNew(() =>
{
// Get the data from your db
var data = GetDbData();
foreach (MyElement row in data)
{
if (dataGridView1.InvokeRequired)
{
dataGridView1.Invoke(new Action(() =>
{
// Add the row
}));
}
}
});
}
person
as-cii
schedule
09.03.2011