Archief - [PROG][vb.net] Threading

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

T2000

Legacy Member
ik ben geen vb.net export, maar zit met een probleemke. Heb in mijn source een functie met parameters die ik aanroep en die naargelang even kan duren waardoor de ganse applicatie even 'hangt'.
Ik zou die functie graag als nieuwe thread maken maar ik geraak er niet uit. Lijkt wel of je geen nieuwe thread kan maken van die functie met parameters. Iemand een idee of hulplink?

thx!

nickman

Legacy Member
Ik ken geen threads in VB.net, maar in C++ (met gebruik van JTC threads) doen wij dat op volgende manier:

Op een thread handler kan je enkel de functie start() oproepen welke dan de procedure run() (gedefinieerd in jouw thread classe) gaat aanroepen.

Wil je nu nog andere functies om deze thread kunnen aanroepen dan moet je eerst een pointer naar je thread type maken (hierop kan je dan allerlei bewerkingen doen) en deze pointer toekennen aan de thread handler.

Zo kan je je thread starten, en nog andere aanpassingen doen (zoals bepaalde variabelen in de thread setten ;)).

Ik weet niet of je hiermee veel geholpen bent, maar beter kan ik het niet echt verwoorden momenteel :D

T2000

Legacy Member
aaah... ksnap het een beetje denk ik. In vergelijking zou je dan in .net een soort van classe maken van die functie zodat je de nodige parameters kan meegeven alvorens de start mee te geven. Kben ongeveer mee met je uitleg. Alvast bedankt voor je toelichting!

UniKorn

Legacy Member
Efkes geleden sinds ik met threads gewerkt heb, maar je kan normaal gezien 1 parameter meegeven in een thread. Als die parameter een klasse maakt kan je in die klasse alle nodige parameters meegeven.

Dreamchaser

Legacy Member
UniKorn zei:
Efkes geleden sinds ik met threads gewerkt heb, maar je kan normaal gezien 1 parameter meegeven in een thread. Als die parameter een klasse maakt kan je in die klasse alle nodige parameters meegeven.

Idd. Ik zou ook eens googlen naar informatie over de ThreadPool. Dat is de eenvoudigste en efficientste manier om een functie te laten uitvoeren in een thread. De functie moet dan wel 1 parameter van type Object hebben, maar hiervoor vind je wel een oplossing (wrapper-functie bvb).

H@voc_!nc.

Legacy Member
As ge threads wilt gerbruiken zeide verkeerd bezig... threading is meest complexe materie in programming en geeft alleen miserie.
hetgeen gij wilt doen lost ge best op met nen call-back. kijk eens naar delegates en dergelijke

LethPhaos

Legacy Member
waarom zouden threads enkel miserie zijn, wat is dan het nut van dualcore proc's als niemand multithreaded wil coden omdat het miserie is -_-

orez

Legacy Member
dual core heeft niets met multithreading te maken ;)

Trouwens als je met VB.NET 2005 werkt --> "BackgroundWorker" is your tool ;)

jodeman

Legacy Member
Threads kunnen ook niet ingewikkeld zijn. Zolang het iets moet afhandelen dat verder geen interactie heeft met de rest van het programma kunt ge die thread rustig laten lopen : vb geluid of bestand versturen of UI inladen... daar moet je geen rekening houden met synchronisatie. Dus het kan zijn dat je het kan gebruiken :).

LethPhaos

Legacy Member
ah is het niet zo dat een multithreaded programma de threads over de aanwezige cores gaat verdelen?

wlibaers

Legacy Member
LethPhaos zei:
waarom zouden threads enkel miserie zijn, wat is dan het nut van dualcore proc's als niemand multithreaded wil coden omdat het miserie is -_-

Multiprocess. Zelfs als alle programma's single threaded zijn kunnen processen tegelijk lopen.

LethPhaos zei:
ah is het niet zo dat een multithreaded programma de threads over de aanwezige cores gaat verdelen?

Het programma zelf heeft daar weinig invloed op, de scheduler van het OS maakt die beslissingen. (afhankelijk van het OS kan je daar wel wat invloed op uitoefenen)

[AiR] LeViaTHaN

Legacy Member
ThreadStart starter = new ThreadStart(WorkerMethod);
Thread trd = new Thread(starter);
trd.Start();

public void WorkerMethod()
{
// Zware berekeningen...
}

En uw WorkerMethod draait op nen andere thread

C# syntax maar ge zult da wel naar VB.NET kunnen omzetten zeker
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan