Je travaille dans l'application WinForms et j'ai utilisé le contrôle DataGridView dans mon application. Au départ, j'ai chargé les 10000 lignes et 50 colonnes. Mon scénario est que la mise à jour de la source de données à un intervalle de temps particulier (en utilisant Timer).Comment éviter que le contrôle ne gèle lors de la mise à jour de la source de données lors de l'exécution?
Problème: La grille a été gelée/gang lors de l'exécution de l'action (cell_click, scrolling, etc.) lors de la mise à jour de la source de données.
Comment résoudre ce problème? Y a-t-il des solutions de rechange? S'il vous plaît me suggérer vos idées.
Voici mon code à ce jour:
private void timer1_Tick(object sender, EventArgs e)
{
//try
{
timer.Stop();
for (int i = 0; i < 10000; i++)
{
var row = r.Next() % 10000;
for (int col = 1; col < 10; col++)
{
var colNum = r.Next() % 55;
if (table != null)
table.Rows[row][colNum] = "hi";// r.Next().ToString();
}
}
table.AcceptChanges();
timer.Start();
}
}
Voici un exemple de sortie:
[https://drive.google.com/open?id=0B9MOGv1FOt-TQ1BNZWtnRktxeXc]
Merci.
Quelle est la fréquence de mise à jour des données? Combien de temps faut-il habituellement pour terminer? –
Je crains que 'DataSet' et' DataGridView' ne soient simplement conçus pour que des dizaines de milliers de lignes soient mises à jour en temps réel. Vous souhaitez probablement une grille de données avec un rendu virtualisé, et idéalement avec une source de données qui n'est pas étroitement liée à l'interface utilisateur. – Luaan
Utilisez-vous un BindingSource en tant que DataSource de DataGridView? – TnTinMn