Ik heb een windows form met een datagrid en een klasse die useraccounts laad in een dataset.
Ik gebruik threading zodat de form niet 'bevriest' terwijl ik de dataset vul en bind aan de datagrid. Maar ik kan de dataset niet binden aan de datagrid omdat hij met de foutmelding komt dat ik niet een control gemaakt in een andere thread kan binden. Na dit probleem te hebben voorgelegd hier en daar bleek dat ik invoking moet gebruiken.
Maar ik zit nu aardig vast met het gebruik van delegates..
Ben dus hard op zoek naar hints/tips/antwoorden..
Code snippets:
Ik gebruik threading zodat de form niet 'bevriest' terwijl ik de dataset vul en bind aan de datagrid. Maar ik kan de dataset niet binden aan de datagrid omdat hij met de foutmelding komt dat ik niet een control gemaakt in een andere thread kan binden. Na dit probleem te hebben voorgelegd hier en daar bleek dat ik invoking moet gebruiken.
Maar ik zit nu aardig vast met het gebruik van delegates..
Visual Basic:
1
| Dim DataBindDelegate As BindGrid = AddressOf myGrid. '--What to do here? |
Ben dus hard op zoek naar hints/tips/antwoorden..
Code snippets:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Private WithEvents myGrid As New AccountGrid() Private AccountGridThread As New Thread(AddressOf myGrid.FillDataSet) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DataGrid1.Enabled = False AccountGridThread.Start() StatusBar1.Text = "Loading accounts..." End Sub Delegate Function BindGrid(ByVal DS As DataSet) As DataSet Private GridDelegate As BindGrid Private Sub GetAccountsCompleted(ByVal DS As DataSet) Handles myGrid.ThreadComplete MsgBox(DS.GetXml.ToString) DataGrid1.Enabled = True Dim DataBindDelegate As BindGrid = AddressOf myGrid. '--What to do here? '--DataGrid1.SetDataBinding(DS, "Accounts") Gives error: Cannot bind 'control created in another thread.. this is the problem i`m trying to solve. StatusBar1.Text = "Done loading accounts" End Sub |