Ik ben bezig mezelf wat C# aan proberen te leren. Heb ik net een boekje over uit. Mijn achtergrond ligt bij Delphi en ik merk dat de threading toch net iets anders werkt. Ik heb al verschillende dingen gezocht en veel gevonden, maar ik kom er nog steeds niet uit.
(1) Ik ben er inmiddels uit hoe je uit thread X via Invoke en een delegate code in je UI thread uit kan voeren. Maar als thread Y nou eens niet de UI thread is maar nog een andere thread, hoe doe ik dat? Je normale thread object heeft geen Invoke method. Als je met Wait/Pulse ed gaat werken komt je er uiteindelijk toch op uit dat je threads nog de hele tijd op elkaar zitten te wachten? In feite zoek ik, net als je met de UI thread kunt, naar cross-thread delegates (of naar hoe je de Invoke method toevoegd aan je eigen objecten), zodat de threads lekker hun eigen ding kunnen blijven doen, maar er toch signalering ed op kan treden zonder te hoeven pollen.
(2) tcpClient - BeginXXXX async methods. De delegate die hier aangeroepen wordt, wordt uitgevoerd in een eigen thread. Maar je moet de BeginXXXX method aan blijven roepen om data te blijven ontvangen (toch?) en communiceren met andere threads of iets met de data te doen (over het algemeen gesproken). Dan is het toch 'handiger' om de complete tcpClient code (incl connect etc) en blocking read/writes te doen in een aparte thread, of mis ik hier nu iets?
(3) Remoting - dit heb ik dus nog niet geprobeerd, maar het sprong meteen in mijn hoofd toen ik bovenstaande dingen dacht. Als je een remote object gebruikt, zijn de callback delegates die in je client (vanuit de server) uitgevoerd worden dan altijd in de thread vanuit waar je het remote object 'geinstantieerd' hebt? Of heeft de threading van het remote object hier ook nog mee te maken, of... ?
Dat is het wel even denk ik
(1) Ik ben er inmiddels uit hoe je uit thread X via Invoke en een delegate code in je UI thread uit kan voeren. Maar als thread Y nou eens niet de UI thread is maar nog een andere thread, hoe doe ik dat? Je normale thread object heeft geen Invoke method. Als je met Wait/Pulse ed gaat werken komt je er uiteindelijk toch op uit dat je threads nog de hele tijd op elkaar zitten te wachten? In feite zoek ik, net als je met de UI thread kunt, naar cross-thread delegates (of naar hoe je de Invoke method toevoegd aan je eigen objecten), zodat de threads lekker hun eigen ding kunnen blijven doen, maar er toch signalering ed op kan treden zonder te hoeven pollen.
(2) tcpClient - BeginXXXX async methods. De delegate die hier aangeroepen wordt, wordt uitgevoerd in een eigen thread. Maar je moet de BeginXXXX method aan blijven roepen om data te blijven ontvangen (toch?) en communiceren met andere threads of iets met de data te doen (over het algemeen gesproken). Dan is het toch 'handiger' om de complete tcpClient code (incl connect etc) en blocking read/writes te doen in een aparte thread, of mis ik hier nu iets?
(3) Remoting - dit heb ik dus nog niet geprobeerd, maar het sprong meteen in mijn hoofd toen ik bovenstaande dingen dacht. Als je een remote object gebruikt, zijn de callback delegates die in je client (vanuit de server) uitgevoerd worden dan altijd in de thread vanuit waar je het remote object 'geinstantieerd' hebt? Of heeft de threading van het remote object hier ook nog mee te maken, of... ?
Dat is het wel even denk ik