2017-10-12 2 views
-1
For Each drow As DataGridViewRow In DgvItemList.Rows 
      drow.Cells("strSrNo").Value = drow.Index + 1 
     Next 

Ich habe mehr als 3500 Datensätze in DgvItemList. Ich gebe nur die Nummerierung zu diesen Aufzeichnungen, aber es tool 9 bis 10 Minuten dafür.Loop dauert etwa 10 Minuten in Vb

Wie reduziert man diese Zeit?

+0

https://stackoverflow.com/questions/5817632/beginupdate-endupdate-for-datagridview-request, vielleicht? Windows-Nachrichten machen es jedoch Windows-spezifisch. – Ryan

+0

wie geht das? – Bhoomi

+0

Was versuchst du eigentlich zu tun? Wie in: * Warum * müssen Sie Daten, die wie eine Art Seriennummer aussehen, den Daten zuweisen, die bereits im Raster sind? EDIT: auch, ist Ihr Gitter an eine DataTable oder etwas gebunden? –

Antwort

2

Zwei Dinge. Jedesmal, wenn Sie den Wert ändern, könnte es die Datagridview führen zu aktualisieren, so kurz vor der Schleife, fügt

DgvItemList.SuspendLayout 

und nach der Schleife, fügt

DgvItemList.ResumeLayout 

Sie könnten auch die Schleife zu einer Änderung Parallel.For Schleife, so dass Ihr würde endgültige Code so etwas wie es

DgvItemList.SuspendLayout 
Parallel.For(0, DgvItemList.Rows.Count, Sub(index As Integer) 
             DgvItemList.Rows(index).Cells("strSrNo").Value = DgvItemList.Rows(index).Index + 1 
              End Sub) 
DgvItemList.ResumeLayout 

Versuchen sein mit der sich Suspend und Resume Layout. Von der Parallelisierung werden Sie wahrscheinlich nicht viel profitieren. Einen Ausflug wert.

+0

Sollte die Bedingung der Parallel nicht enden.Für die Zeilenanzahl minus 1? – dwilliss

+0

Ich habe 'Parallel.For' noch nie benutzt, aber müssen Sie nicht wie bei regulären Threads/Tasks auf die Benutzeroberfläche zugreifen? –

+0

@dwilliss nein. Nur um die Leute zu verwirren, wird eine reguläre for.next-Schleife von 0 bis 100 101-mal durchlaufen, aber eine parallel.for-Schleife wird nur von 0 bis 99 ausgeführt, also müssen Sie nicht 1 vom Endwert in der Fall von nullbasierten Indizes. Auf der anderen Seite der Münze, natürlich, wenn das Ende Ihrer Schleife von array.getupperbound erhalten wird, müssen Sie möglicherweise hinzufügen 1 –

Verwandte Themen