将.txt加载/拆分为多个列表框。

时间:2017-04-18 16:21:51

标签: arrays vb.net listbox openfiledialog file.readalllines

我试图想出一种方法来加载一个非常大的.txt文件,并认为如果我把它分成几个部分(Listboxes)它会加载更快,更容易操作,滞后更少。或者有背景工作者的OFD方法吗? 这是我加载.txt的方式

      TextBox1.Text = ""
    OpenFileDialog1.Title = "Load File"
    OpenFileDialog1.InitialDirectory = "C:temp"
    OpenFileDialog1.ShowDialog()
    Dim path As String = OpenFileDialog1.FileName
    TextBox1.Text = path
    Dim lines() As String = IO.File.ReadAllLines(TextBox1.Text)

我可以进入并用分隔符标记.txt的每1/4,如果这会有帮助吗? 我在想,如果我迭代XX数量的行然后下一个列表框等。也许某些形式的items.count在if not语句中?我的想法是围成一圈,请瞄准我最好的方向。我的文件是25.MB并且增长缓慢。 Notepad ++是处理ATM的唯一方法。

     ListBox1.Items.Add(lines(1 - 10000))

抛出错误("外部数组索引或类似的")

       ListBox1.Items.Add(lines(10000))

加载单行

1 个答案:

答案 0 :(得分:0)

可能与此类似。这不是100%准确的代码。但是要给你一个想法。

Dim dt As New DataTable()
Dim lines As New List(Of [String])()
lines = New List(Of [String])(File.ReadLines(ofDialog.FileName))
Task.Run(Function() 
Dim options As New ParallelOptions()
options.MaxDegreeOfParallelism = CInt(1)//Number of threads to spawn

Parallel.ForEach(lines, options, Function(line) 
    dt.Rows.Add()
End Function)
Me.Invoke(DirectCast(Sub() listview.DataSource = dt, MethodInvoker))

End Function)