Ci-dessous est ce que j'ai utilisé. Bien que cela fonctionne, mon programme se bloque lorsque je tente de compter un fichier assez volumineux, disons 10 000 lignes ou plus. Les petits fichiers fonctionnent en un rien de temps.
Existe-t-il un meilleur moyen ou devrais-je dire plus rapide pour compter les lignes dans un fichier texte?
Voici ce que j'utilise actuellement:
Dim selectedItems = (From i In ListBox1.SelectedItems).ToArray()
For Each selectedItem In selectedItems
ListBox2.Items.Add(selectedItem)
ListBox1.Items.Remove(selectedItem)
Dim FileQty = selectedItem.ToString
'reads the data file and returns the qty
Dim intLines As Integer = 0
'Dim sr As New IO.StreamReader(OpenFileDialog1.FileName)
Dim sr As New IO.StreamReader(TextBox1_Path.Text + "\" + FileQty)
Do While sr.Peek() >= 0
TextBox1.Text += sr.ReadLine() & ControlChars.CrLf
intLines += 1
Loop
ListBox6.Items.Add(intLines)
Next
Imports System.IO.File 'At the beginning of the file
Dim lineCount = File.ReadAllLines("file.txt").Length
Voir ceci question.
Même si vous faites en sorte que votre itération soit aussi efficace que possible, si vous lui remettez un fichier assez volumineux, l'application va geler pendant qu'elle effectue le travail.
Si vous souhaitez éviter le verrouillage, vous pouvez créer un nouveau thread et effectuer le travail de manière asynchrone. Si vous utilisez .NET 4.0, vous pouvez utiliser la classe Task pour rendre cela très facile.
TextBox2.Text = File.ReadAllLines(scannerfilePath).Length.ToString()