你好我有一個循環,持續大約2小時完成,它從互聯網獲取數據並將其填充到數據庫,所以我想分成4個線程,並且我在嘗試在我將其應用到我的應用程序之前做一些測試。vb.net 4個線程來填充相同的數據庫
所以這裏是我寫的4個線程 和我收到此錯誤,以填補一個數據庫中的樣本「的BindingSource不能是自己的數據源」
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.DataGridView1.DataSource = Me.bindingSource1
GetData("select * from products")
End Sub
Public Sub thread1f0()
For i = 0 To 500
DataGridView1.Item("PD", i).Value = i + 67
DataGridView1.Item("PDP", i).Value = i + 41
DataGridView1.Item("TPD", i).Value = i + 654 + 6 * 13
DataGridView1.Item("TPDP", i).Value = i + 342
Next
End Sub
Public Sub thread1f1()
For i = 501 To 1000
DataGridView1.Item("PD", i).Value = i + 432
DataGridView1.Item("PDP", i).Value = i + 421
DataGridView1.Item("TPD", i).Value = i + 414
DataGridView1.Item("TPDP", i).Value = i + 42 + 4
Next
End Sub
Public Sub thread1f2()
For i = 1001 To 1500
DataGridView1.Item("PD", i).Value = i + 4452
DataGridView1.Item("PDP", i).Value = i + 34
DataGridView1.Item("TPD", i).Value = i + 123
DataGridView1.Item("TPDP", i).Value = i + 44
Next
End Sub
Public Sub thread1f3()
For i = 1501 To 2000
DataGridView1.Item("PD", i).Value = i + 423
DataGridView1.Item("PDP", i).Value = i + 423
DataGridView1.Item("TPD", i).Value = i + 423
DataGridView1.Item("TPDP", i).Value = i + 423/2
Next
End Sub
「/////// ////////////////////////////////////////////////// /////////////
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
thread0 = New System.Threading.Thread(AddressOf thread1f0)
thread0.Start()
thread1 = New System.Threading.Thread(AddressOf thread1f1)
thread1.Start()
thread2 = New System.Threading.Thread(AddressOf thread1f2)
thread2.Start()
thread3 = New System.Threading.Thread(AddressOf thread1f3)
thread3.Start()
End Sub
Public Sub GetData(ByVal selectCommand As String)
Try
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileName
Me.dataAdapter = New OleDbDataAdapter(selectCommand, connectionString)
Dim commandBuilder As New OleDbCommandBuilder(Me.dataAdapter)
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
Me.dataAdapter.Fill(table)
Me.bindingSource1.DataSource = table
Me.DataGridView1.AutoResizeColumns(_
DataGridViewAutoSizeColumnsMode.ColumnHeader)
Catch ex As OleDbException
MessageBox.Show(ex.Message)
End Try
End Sub
你爲什麼認爲使用線程有幫助? IO有可能成爲瓶頸,添加線程無助於此。 – Oded 2012-08-09 14:36:14
以及它可能沒有幫助,但我只是想學習如何使用它們,所以我想知道爲什麼是異常生成 – user1570048 2012-08-09 14:39:18
我會說這個錯誤與線程無關。你如何綁定你的數據?你是否將控制權限制於自身? – Oded 2012-08-09 14:41:02