Toon posts:

[vb.net] gebruik van delegates

Pagina: 1
Acties:

Verwijderd

Topicstarter
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..
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

Verwijderd

Topicstarter
Niet uit de hoogte maar is dit onderwerp voor mede vb.netters onbekend? of ben ik verkeerd bezig en kan ik het beter anders doen...

zit erg vast namelijk

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

misschien stom .. van mij .. ook qua performance misschien (bij grote datasets).. Maar ik gebruik een flexgrid control...in combi met ADO..(nou ja goed dan .. in vb 6 . vast wel nog aanwezig in .net) waar ik alles mee kan.. en .. waar ik data niet mee bind...
Ik vul alle data daardoor gewoon op ado niveau in combi met de methoden van de flexgrid.. Niks binden dus...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

DaftPunkNL: [snip]
Kicken binnen 24 uur. Niet meer doen, ajb.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
henkleerssen schreef op 17 maart 2003 @ 14:26:
misschien stom .. van mij .. ook qua performance misschien (bij grote datasets).. Maar ik gebruik een flexgrid control...in combi met ADO..(nou ja goed dan .. in vb 6 . vast wel nog aanwezig in .net) waar ik alles mee kan.. en .. waar ik data niet mee bind...
Ik vul alle data daardoor gewoon op ado niveau in combi met de methoden van de flexgrid.. Niks binden dus...
Ja maar is zonde om het niet te doen met databinding... en als ik delegates onder de knie heb, kan ik ze vaker toepassen..

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

offtopic:
Daar gaan we hier geen discussie over voeren. Als je dat wilt, kun je in Lieve Adjes terecht.

[ Voor 82% gewijzigd door drm op 17-03-2003 14:54 ]


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Verwijderd schreef op 17 maart 2003 @ 14:48:
[...]


Ja maar is zonde om het niet te doen met databinding... en als ik delegates onder de knie heb, kan ik ze vaker toepassen..
raar dat er bij msdn niks staat.. over delegates functie..
Ik heb toch het idee.. dat het de boel niet makkelijker maakt.. dan dat je het zelf helemaal op vb (class) module niveau afhandelt...

Verwijderd

Topicstarter
henkleerssen schreef op 17 March 2003 @ 14:56:
[...]

raar dat er bij msdn niks staat.. over delegates functie..
Ik heb toch het idee.. dat het de boel niet makkelijker maakt.. dan dat je het zelf helemaal op vb (class) module niveau afhandelt...
Er zijn wel een aantal voorbeelden op MSDN, dan wel in c#, maar die wijken voor mij te veel af van wat ik wil bereiken en snap dus niet hoe ik die moet implementeren. Maar naast MSDN heb ik ook een voorbeeld APP die doet wat ik wil. Maar die doet alles weer in klasse en ik wil het dus juist zo gesplits en onafhankelijk hebben.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 17 March 2003 @ 14:59:
[...]


Er zijn wel een aantal voorbeelden op MSDN, dan wel in c#, maar die wijken voor mij te veel af van wat ik wil bereiken en snap dus niet hoe ik die moet implementeren. Maar naast MSDN heb ik ook een voorbeeld APP die doet wat ik wil. Maar die doet alles weer in klasse en ik wil het dus juist zo gesplits en onafhankelijk hebben.
Heb je een voorbeeldje in C#? Eventueel kan je deze door de translator van ASPAlliance halen; een paar kleine aanpassingen en je code is VB.net.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 17 March 2003 @ 15:00:
[...]

Heb je een voorbeeldje in C#? Eventueel kan je deze door de translator van ASPAlliance halen; een paar kleine aanpassingen en je code is VB.net.
Het vertalen is niet eens nodig omdat ik een voorbeeld APP in VB.NET heb. Het probleem is dus dat ik met dat voorbeeld APP nog steeds vast loop. Het probleem is dat ik nog niet inzie waarom je invoke/delegate zou moeten gebruiken. Weet alleen dat het nodig is, maar niet waarom. Weet iemand misschien daar antwoord op? Want ik ben dus nu opzoek naar een oplossing voor een probleem dat ik heb... maar ik zie geen probleem.. alleen dat het niet kan (en dus uiteindelijk toch een probleeem ;-)... maar wat code-tips voor het probleem hier helemaal boven worden momenteel toch wat meer op prijs gesteld... -kijkend naar de klok-

  • whoami
  • Registratie: December 2000
  • Nu online
Weet je wat een delegate is?

Een delegate kan je beschouwen als een 'functie pointer'. Een delegate is dus een variable waaraan je een method kunt assignen die een bepaalde signature heeft. (Die signature werd bepaald in de delegate-definitie). Dmv die delegate kan je dus die functie laten uitvoeren, zonder dat die functie op die plaats gekend is.

henkleerssen schreef op 17 March 2003 @ 14:26:
misschien stom .. van mij .. ook qua performance misschien (bij grote datasets).. Maar ik gebruik een flexgrid control...in combi met ADO..(nou ja goed dan .. in vb 6 . vast wel nog aanwezig in .net) waar ik alles mee kan.. en .. waar ik data niet mee bind...
Ik vul alle data daardoor gewoon op ado niveau in combi met de methoden van de flexgrid.. Niks binden dus...


ADO is vervangen door ADO.NET; allemaal andere classes, interfaces, ed...
Een flexgrid is afaik niet in .NET geimplementeerd. Je hebt daar wel een DataGrid ed, en je kan ook wel een flexgrid in je project gebruiken, maar dan ben je imo niet meer bezig met code die door de CLR gemanaged is.
Trouwens, jouw manier (recordset doorlopen, ieder record 'handmatig' toevoegen), zal imo trager zijn (zeker bij grote recordsets) ivgl met 'databinding'.

[ Voor 57% gewijzigd door whoami op 17-03-2003 16:42 ]

https://fgheysels.github.io/


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

whoami schreef op 17 March 2003 @ 16:40:
Weet je wat een delegate is?

Een delegate kan je beschouwen als een 'functie pointer'. Een delegate is dus een variable waaraan je een method kunt assignen die een bepaalde signature heeft. (Die signature werd bepaald in de delegate-definitie). Dmv die delegate kan je dus die functie laten uitvoeren, zonder dat die functie op die plaats gekend is.
Klinkt interessant.. maar basic is het niet meer...Wordt wel heel erg C++...

  • whoami
  • Registratie: December 2000
  • Nu online
henkleerssen schreef op 17 maart 2003 @ 16:42:
[...]

Klinkt interessant.. maar basic is het niet meer...Wordt wel heel erg C++...


Het gaat hier niet over Basic, maar over Visual Basic.NET. Een delegate is een object georienteerde, type-safe, manier om stukken code (methods) op een andere plaats uit te voeren. (te vergelijken met een functie-pointer).
Delegates zijn een onderdeel van .NET, en ze bestaan in C#, VB.NET, C++.NET, en hebben helemaal niks met (ANSI) C++ te maken. Je moet ook helemaal niet met pointers ofzo gaan spelen, want in VB.NET is dat helemaal niet mogelijk. In C# is dat wel mogelijk, maar dan moet je die code wel als 'unsafe' gaan declareren, waardoor die 'unsafe' code ook niet meer gemanaged is door de CLR.

[ Voor 24% gewijzigd door whoami op 17-03-2003 16:45 ]

https://fgheysels.github.io/


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

whoami schreef op 17 March 2003 @ 16:44:

[...]


Het gaat hier niet over Basic, maar over Visual Basic.NET. Een delegate is een object georienteerde, type-safe, manier om stukken code (methods) op een andere plaats uit te voeren. (te vergelijken met een functie-pointer).
Delegates zijn een onderdeel van .NET, en ze bestaan in C#, VB.NET, C++.NET, en hebben helemaal niks met (ANSI) C++ te maken. Je moet ook helemaal niet met pointers ofzo gaan spelen, want in VB.NET is dat helemaal niet mogelijk. In C# is dat wel mogelijk, maar dan moet je die code wel als 'unsafe' gaan declareren, waardoor die 'unsafe' code ook niet meer gemanaged is door de CLR.
Was dan het precies verschil met het declareren van classes die dan een method heeft om bijvoorbeeld naar de laatste record te gaan (wat ik al heb gedaan met ado om ff terug te komen op het databinden en zo?)... is toch ook type-safe, object georienteerd en een methode die op een andere plaats kan worden uitgevoerd?

  • whoami
  • Registratie: December 2000
  • Nu online
henkleerssen schreef op 17 maart 2003 @ 16:52:
[...]

Was dan het precies verschil met het declareren van classes die dan een method heeft om bijvoorbeeld naar de laatste record te gaan (wat ik al heb gedaan met ado om ff terug te komen op het databinden en zo?)... is toch ook type-safe, opject georienteerd en een methode die op een andere plaats kan worden uitgevoerd?



Ik heb hier een post gemaakt waar ik het gebruik van delegates toon in form-communicatie.

Met een delegate kan je een method aan die delegate toewijzen. Dan kan je die method die die delegate bevat gaan uitvoeren, zonder dat je weeet welke method er in die delegate zit, en zonder dat die method een member moet zijn van die class.

https://fgheysels.github.io/


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

whoami schreef op 17 maart 2003 @ 16:56:

[...]



Ik heb hier een post gemaakt waar ik het gebruik van delegates toon in form-communicatie.

Met een delegate kan je een method aan die delegate toewijzen. Dan kan je die method die die delegate bevat gaan uitvoeren, zonder dat je weeet welke method er in die delegate zit, en zonder dat die method een member moet zijn van die class.
aha.,..dat verheldert de boel.. is dit nog wel object georienteerd?

  • whoami
  • Registratie: December 2000
  • Nu online
henkleerssen schreef op 17 March 2003 @ 16:59:
[...]

is dit nog wel object georienteerd?


Waarom vind jij van niet (of twijfel je daaraan)?

[ Voor 10% gewijzigd door whoami op 17-03-2003 17:32 ]

https://fgheysels.github.io/


  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

dat je zomaar een methode (Functie) gaat toewijzen aan een object... terwijl je die al hebt gedefenieerd in een ander object... Is het dan inheritance? Lijkt me niet.. Het klinkt eerder procudereel... gewoon leentje buur van een methode... och ja... Ik weet het ook niet precies...

  • Orphix
  • Registratie: Februari 2000
  • Niet online
henkleerssen schreef op 17 maart 2003 @ 20:37:
dat je zomaar een methode (Functie) gaat toewijzen aan een object... terwijl je die al hebt gedefenieerd in een ander object... Is het dan inheritance? Lijkt me niet.. Het klinkt eerder procudereel... gewoon leentje buur van een methode... och ja... Ik weet het ook niet precies...
Het is juist object georienteerd omdat delegates de abstractie tussen verschillende objecten verder vergroot. Het aanroepende object hoeft namelijk niks te weten van de delegate die het gebruikt: bij welk object het hoort, wat er gebeurt.

Verwijderd

delegates 101

erg verhelderend
Pagina: 1