2017-04-18 44 views
1

我想找出一種方法來加載一個非常大的.txt文件,並認爲如果我把它分成幾部分(Listboxes),它會加載得更快,並且更容易操作,延遲更少。或者有沒有辦法與後臺工作的OFD? 這裏是我正在加載的.txt加載/分割一個.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在一個如果不是聲明?我的想法正在圈起來,請將我的目標瞄準最佳方向。我的文件是25.MB,增長緩慢。記事本++是處理ATM的唯一的東西。

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

引發錯誤( 「外數組索引或類似」)

 ListBox1.Items.Add(lines(10000)) 

荷載單線沿着此線

+0

您正在UI線程上加載它。因此,要載入的數據越多,需要的時間越長。您應該將該文件加載到DataTable中,然後在完成將文件加載到數據表後將該數據表綁定到列表框。 –

回答

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) 
+0

謝謝您的示例,我現在就給出一個解決方案。 –

+0

可能有另一種方式,但仍然可以使用你的專業知識。 –

+0

我選擇這個作爲正確的答案,看看這是如何正確的做法 –