[BCB6] om 't uur functie uitvoeren

Pagina: 1
Acties:

  • A_to_the_S
  • Registratie: Maart 2003
  • Laatst online: 15-10-2025
dus ik ben een programma aant maken dat om het uur moet connecten met een telnet server, en dan zijn gegevens updaten op die server.

Het connecten en dergelijke lukt allemaal maar wat makkelijk lijkt, lukt juist niet, de timer.


Hoet moet ik een timer maken dit om het uur de functie sendStatus() uitvoert?

Ik heb het volgende als test geprobeert:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
//====================================
int singletonTimer::timer()
{
   int i;
   Send x;
   for(i=0; i<10; i++)
   {
       x.sendStatus();
       Sleep (500);
   }
   return 4;
}
//====================================

Hij returned de 4 pas als hij helemaal klaar is met de functie (logisch).
Maar hoe laat ik dan het hoofdprogramma verder gaan terwijl hij nog wel rekening maakt met de bovenstaande functie.
(zou iets met threads zijn volgens mij maar dat heb je (naar mijn weten) niet in c++)

alvast bedankt

[ Voor 3% gewijzigd door whoami op 25-05-2005 13:06 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Geen threads in C++ ? Goh.....

Over welke 'C++' gaat het hier ? Ik vermoed om Borland C++ Builder ?
Zoek eens in de help op 'threads'.

En gebruik in 't vervolg ook 'code' tags om je code te posten, ik heb het nu voor jou ff aangepast, maar let er in het vervolg ff op, ok ?

[ Voor 17% gewijzigd door whoami op 25-05-2005 13:07 ]

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-05 14:03

curry684

left part of the evil twins

A_to_the_S schreef op woensdag 25 mei 2005 @ 13:04:
(zou iets met threads zijn volgens mij maar dat heb je (naar mijn weten) niet in c++)
:? :? :?

Op welk platform ben je uberhaupt bezig?

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

A_to_the_S schreef op woensdag 25 mei 2005 @ 13:04:
(zou iets met threads zijn volgens mij maar dat heb je (naar mijn weten) niet in c++)
Niet in standaard C++ idd, maar meestal heb je wel wat meer tot je beschikking dan alleen standaard C++, zoals OS API functies e.d.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • A_to_the_S
  • Registratie: Maart 2003
  • Laatst online: 15-10-2025
whoami schreef op woensdag 25 mei 2005 @ 13:06:
Geen threads in C++ ? Goh.....

Over welke 'C++' gaat het hier ? Ik vermoed om Borland C++ Builder ?
Zoek eens in de help op 'threads'.

En gebruik in 't vervolg ook 'code' tags om je code te posten, ik heb het nu voor jou ff aangepast, maar let er in het vervolg ff op, ok ?
Sorry, het is de eerste keer dat ik hier post voor code.

en het gaat inderdaad om Borland C++ Builder 6
windows xp home

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 10:04
In een timer event checken of er een uur is verstreken sinds de laatste update.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Karel V
  • Registratie: November 2003
  • Laatst online: 18-12-2025

Karel V

Een simpele ziel

Als het C++ Builder is, en over threads gaat:
Muiskliks:
File -> New-> Other -> en dan in het lijstje scrollen naar "thread object".
Hier nog een handig linkje, met voorbeeld van mainform and Thread:
http://www.traverse.com/people/poinsett/bcbcomm.html

[ Voor 10% gewijzigd door Karel V op 25-05-2005 13:39 ]

The old Lie: Dulce et Decorum est Pro patria mori


  • Karel V
  • Registratie: November 2003
  • Laatst online: 18-12-2025

Karel V

Een simpele ziel

Plaats een timer op je mainform (blad waar je al je componenten, tekstboxjes etc. plaatst).
Selecteer vervolgens je timer en druk op "F11". Als het goed is heb je nu de "Object inspector" voor je neus. Kijk dan in properties: naar de interval. Hij staat normaal op 1000 milliseconden. Een uur is 60 seconden maal 60 minuten dus 3600 seconden is dus 3600000 milliseconden. Dat vul je daar in en vervolgens dubbel klik je op de timer in je form.
Dan zie je dat je in je programmeervel een nieuwe functie hebt aangemaakt. Daar kun je dan je stukje code in zetten.
code:
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   int i;
   Send x;
   for(i=0; i<10; i++)
   {
       x.sendStatus();
   }
   return 4;
 
}
//---------------------------------------------------------------------------

Als je niet wilt dat de timer altijd werkt maar alleen als jij dat wilt, kun je dat met
Form1->Timer1->Enabled = true;
Je kunt zelfs aangeven of je bij het starten je timer aan wilt hebben of niet.
Dat doe je weer in je object inspector. Bij properties , enabled is true of false wat je wilt. Normaal staat hij op true en tikt het klokje dus gelijk.
Ik hoop dat je er wat aan hebt.
Psss: zover ik weet gooit sleep je hele mainprogramma plat, die zou ik dan ook weglaten. Eventueel kun je wel wachten met een while statement. While x.sendStatus() nog waar is doe dan { niks geen code} Dus zo: while (SendstatusBezig == true) { };
Sendstatus is een boolean die je in de x.sendStatus op true zet, en op false aan het einde van je code. Overigens weet ik niet hoe dat zit als sendStatus gewoon in je hoofdprog zit en niet in een thread, dan heb je die code volgens mij helemaal niet nodig.

Thread:
Dat is een draad die naast je hoofdprogramma loopt. Zodat je hoofdprogramma zich bezig kan houden met andere zaken. Persoonlijk gebruik ik de thread om mijn poorten af te vragen, en de eventuele data te verwerken (dan scheelt het hoofdprogramma weer tijd). Het verzenden doe ik gewoon in de main, alleen ik weet natuurlijk niet wat je wilt verzenden. Als dat hele bestanden zijn kan ik je niet helpen, ik verzend kleine messages.
Overigens kun je functies in je main gewoon in je thread aanroepen.
Je declareert je functie hetzelfde als in je main prog maar zet er extern voor.
Ik hou mijn mond maar anders spam ik dit hele forum met info :D

[ Voor 37% gewijzigd door Karel V op 25-05-2005 14:02 ]

The old Lie: Dulce et Decorum est Pro patria mori


  • A_to_the_S
  • Registratie: Maart 2003
  • Laatst online: 15-10-2025
Tjonge dit forum is wel erg effectief, na een uur al 3 goede tips.

mijn complimenten.

Ik heb het opgelost met threads, maar de manier van karel V is ook erg goed.
Maar ik wou de threads is proberen

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-05 14:03

curry684

left part of the evil twins

En hoe stop je de thread zodra je je programma afsluit?

Professionele website nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
:P

Hopelijk niet door de Abort() ofzo aan te roepen.

Het beste is eigenlijk om een soort 'Task' class te maken.
Die class heeft dan een Run() en een Stop() method.

De Run() method voert je functionaliteit uit op een andere thread, en de Stop() method zorgt ervoor dat die mooi beëindigd wordt.

https://fgheysels.github.io/


  • Karel V
  • Registratie: November 2003
  • Laatst online: 18-12-2025

Karel V

Een simpele ziel

Een thread die om het uur data afvraagt?
Maar hoe krijg je dat voor elkaar zonder timers? Ben best benieuwd hoe je dat dan aangepakt hebt.
Ik hoop trouwens niet met sleep, want dat is toch wel de meest gruwelijke code. Heb er al heel wat probleempjes meegehad, vastlopen etc. ( :r Sleep) , maar dat kan ook aan mijn weinige ervaring liggen
Het was trouwens het idee van Farlane , ik heb het alleen ff'tjes uitgewerkt ;)
curry684 schreef op woensdag 25 mei 2005 @ 14:30:
En hoe stop je de thread zodra je je programma afsluit?
Kijk is goed in het forum.... heb je dit linkje niet gezien? http://www.traverse.com/people/poinsett/bcbcomm.html
Daar staat netjes in het form close event hoe dat gaat..... B) O-)
Of ben ik blind :?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
  // TERMINATE THE THREAD.

  ReadThread->Terminate();

  // WAIT FOR THREAD TO TERMINATE,
  // PURGE THE INTERNAL COMM BUFFER,
  // RESTORE THE PREVIOUS TIMEOUT SETTINGS,
  // AND CLOSE THE COMM PORT.

  Sleep(250);
  PurgeComm(hComm, PURGE_RXABORT);
  SetCommTimeouts(hComm, &ctmoOld);
  CloseHandle(hComm);

}

Overigens kun je ook kijken of je tread wel actief was met een boolean.
code:
1
2
3
4
  if(ActiveTRead)
  {
    ReadThread->Terminate(); // TERMINATE THE THREAD
  }

[ Voor 59% gewijzigd door Karel V op 25-05-2005 14:40 ]

The old Lie: Dulce et Decorum est Pro patria mori


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Terminate() aanroepen om je thread te beëindigen is niet echt elegant...

Je beëindigd die thread dan zomaar, terwijl hij misschien met een of andere bewerking bezig was die eerst moet afgerond worden.
Het is beter dat je een method hebt die je kunt aanroepen en waarmee je dus controle hebt over het moment dat de thread echt mag stoppen.

https://fgheysels.github.io/


  • Karel V
  • Registratie: November 2003
  • Laatst online: 18-12-2025

Karel V

Een simpele ziel

whoami schreef op woensdag 25 mei 2005 @ 14:43:
Terminate() aanroepen om je thread te beëindigen is niet echt elegant...

Je beëindigd die thread dan zomaar, terwijl hij misschien met een of andere bewerking bezig was die eerst moet afgerond worden.
Het is beter dat je een method hebt die je kunt aanroepen en waarmee je dus controle hebt over het moment dat de thread echt mag stoppen.
Hier een stukje van mijn thread code.
code:
1
2
3
4
5
6
7
8
void __fastcall Practicant::Execute()
{
  SetName();
  //---- Place thread code here ----
  DWORD dwBytesRead=30, count;

  // MAKE THE THREAD OBJECT AUTOMATICALLY DESTROYED WHEN THE THREAD TERMINATES.
  FreeOnTerminate = true;

En hier de uitleg van C++ BUILDER (En lees nu eens de help in C++ Builder Whoami.............. :+ )
Signals the thread to terminate by setting the Terminated property to true.

void __fastcall Terminate(void);

Description

Terminate sets the thread’s Terminated property to true, signaling that the thread should be terminated as soon as possible. Unlike the Windows API TerminateThread, which forces the thread to terminate immediately, the Terminate method merely requests that the thread terminate. This allows the thread to perform any cleanup before it shuts down.

For Terminate to work, the thread's Execute method and any methods that Execute calls should check Terminated periodically and exit when it's true.
Wahaa, jullie mods bitchen iemand die leert programmeren omdat hij niet zou lezen, maar jullie lezen zelf ook niet. en ga nou niet beweren dat de bovenstaande code uit mijn prog niet in de link stond die ik gaf:
code:
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TRead::Execute()
{
  //---- Place thread code here ----


  DWORD dwBytesRead;

  // MAKE THE THREAD OBJECT AUTOMATICALLY DESTROYED WHEN THE THREAD
  // TERMINATES.

  FreeOnTerminate = true;
:+ , hihi
Sorry hoor, maar toen ik met dit coden begon snapte ik hier geen drol van (en het meeste lees je gegarandeerd overheen). Toen heb ik hier niets gepost om de simpele reden. Mods die beweren dat je niet zoekt.... Maar je kan het ook echt niet weten, heel frustrerend als je dan zo'n antwoord van een mod krijgt. Help zo iemand dan gewoon ff op weg. My two cents....

The old Lie: Dulce et Decorum est Pro patria mori


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Karel V schreef op woensdag 25 mei 2005 @ 14:54:
[...]

En hier de uitleg van C++ BUILDER (En lees nu eens de help in C++ Builder Whoami.............. :+ )

[...]
Dat neemt nog altijd niet weg dat de thread misschien wel op een moment geterminated wordt waarop jij het niet wilt.
Stel dat je een atomaire taak hebt; bv, je doet een aantal updates in een DB, en die moeten binnen één transactie lopen.
Jij doet een Terminate() request, en die thread was juist bezig met de eerste insert/update. Daarna stopt hij. Wat gebeurt er met jouw atomaire dinges?

Die terminate method waarvan jij hier de uitleg gequoted hebt, doet dus niets anders dan hetgeen ik ook uitgelegd heb. (Als je de uitleg uit de help goed leest, en ook gebruik maakt van de tips die erin gegeven worden; iets wat jij denk ik niet doet, aangezien je dat niet in het vet gezet hebt, en ik er ook niets in terugvind in jouw code-voorbeeld).
Maw: enkel gebruik maken van FreeOnTerminate lost de problemen die ik aanhaalde niet op.

En reageer zo arrogant niet. Leer eens van gewoon in discussie te gaan. En leer ook eens tussen de lijnen door te lezen.

[ Voor 40% gewijzigd door whoami op 25-05-2005 15:21 ]

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-05 14:03

curry684

left part of the evil twins

Karel V: Doe eens normaal, we proberen mensen ook maar te helpen en wat te leren :/

Ikzelf was al aan het programmeren voordat jij geboren was, en whoami zal niet veel later begonnen zijn. Beetje normaal respect mag wel hier op het forum.

[ Voor 4% gewijzigd door curry684 op 25-05-2005 14:58 ]

Professionele website nodig?


Verwijderd

Standaard gedrag: 'Ik kan programmeren dus hou je mond....' getuigt niet echt van sociale vaardigheden, maar veel 'uber' programmeurs zoals ikzelf hebben hier wel eens last van.

Maar een vraag is nooit dom!!! alleen een antwoord kan dom zijn!!!

  • Karel V
  • Registratie: November 2003
  • Laatst online: 18-12-2025

Karel V

Een simpele ziel

whoami schreef op woensdag 25 mei 2005 @ 14:58:
[...]

Dat neemt nog altijd niet weg dat de thread misschien wel op een moment geterminated wordt waarop jij het niet wilt.
Stel dat je een atomaire taak hebt; bv, je doet een aantal updates in een DB, en die moeten binnen één transactie lopen.
Jij doet een Terminate() request, en die thread was juist bezig met de eerste insert/update. Daarna stopt hij. Wat gebeurt er met jouw atomaire dinges?
Dat is toch zo af te vangen met een try en een boolean?
Try if boolean waar is ander blijf proberen. Kan trouwens best zijn dat ik me nu in try vergis, maar die heb ik ook verder nooit gebruikt en daarom vraag ik het ook :P
Of zie ik dat verkeerd? (waarom zeg je trouwens atomaire i.p.v. ''belangrijke taak?'')
Die terminate method waarvan jij hier de uitleg gequoted hebt, doet dus niets anders dan hetgeen ik ook uitgelegd heb. (Als je de uitleg uit de help goed leest, en ook gebruik maakt van de tips die erin gegeven worden; iets wat jij denk ik niet doet, aangezien je dat niet in het vet gezet hebt, en ik er ook niets in terugvind in jouw code-voorbeeld).
Maw: FreeOnTerminate lost de problemen die ik aanhaalde niet op.
En reageer zo arrogant niet. Ik heb nergens gezegd hier dat je of de TS niet zoekt. Leer eens van gewoon in discussie te gaan. En leer ook eens tussen de lijnen door te lezen.
Ik heb ook helemaal niet over de TS gezegd, enkel over jou vanwege het volgende:
whoami schreef op woensdag 25 mei 2005 @ 13:06:
Geen threads in C++ ? Goh.....

Over welke 'C++' gaat het hier ? Ik vermoed om Borland C++ Builder ?
Zoek eens in de help op 'threads'.

En gebruik in 't vervolg ook 'code' tags om je code te posten, ik heb het nu voor jou ff aangepast, maar let er in het vervolg ff op, ok ?
Ik vind dat je hiermee iemand nogal minachtend benaderd, vervolgens geef ik je een koekje van eigen deeg. En dan noem je me arrogant? Terwijl ik ook zei:
maar dat kan ook aan mijn weinige ervaring liggen
Sorry hoor, maar als ik lees: goh dan komt dat bij mij minachtend over (en dan ga ik bijna altijd flippen). Je kan ook iemand gewoon uitleggen dat bepaalde zaken terug te vinden zijn in de help op een vriendelijkere en geduldiger toon. Het is namelijk best moeilijk programmeren.
En dat ik over regels heen lees, komt omdat ik amper engels kan ;)
Ikzelf was al aan het programmeren voordat jij geboren was, en whoami zal niet veel later begonnen zijn. Beetje normaal respect mag wel hier op het forum.
Geweldig daar mag je trots op zijn :| , blijkbaar komt mijn kritiek niet over. Wat ik dus vervelend vind is dat je zo'n goede programmeur bent, en dat zo duidelijk moet laten merken met van die verborgen kritische opmerkingen :/ . Jullie doen alsof je uber bent, tuurlijk zijn jullie keien, maar daarom hoef je nog niet te doen dat iemand die begint net als ik en TS dom zijn.
Vandaar dat ik het niet kon laten ff jullie daarop te wijzen, het irriteert me namelijk soms mateloos. Zoals Blaatkoekje het zegt, bedoel ik het dus.

[ Voor 14% gewijzigd door Karel V op 25-05-2005 15:35 ]

The old Lie: Dulce et Decorum est Pro patria mori


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Karel V schreef op woensdag 25 mei 2005 @ 15:26:
[...]

Dat is toch zo af te vangen met een try en een boolean?
:? Nee, dat is niet met een try en een boolean op te lossen.
Try if boolean waar is ander blijf proberen. Kan trouwens best zijn dat ik me nu in try vergis, maar die heb ik ook verder nooit gebruikt en daarom vraag ik het ook :P
exception handling gebruiken om je program flow te bepalen ? Dat moet je nooit doen.
Maar goed, ik zie dat je 'try' nog nooit gebruikt hebt, dus eigenlijk weet je niet waarover je praat ?
(Met try alleen ben je trouwens niks).
(waarom zeg je trouwens atomaire i.p.v. ''belangrijke taak?'')
atomair is niet gelijk aan belangrijk. Atomair wil zeggen: alles of niets.
Ik heb ook helemaal niet over de TS gezegd, enkel over jou vanwege het volgende:
Tja, kan ik er wat aan doen dat die ok je voor de borst stoot.
Het ging er gewoon om dat de TS beter code-tags kan gebruiken. Die ok was er gewoon als bevestiging.
Als dat jou stoort, meld het dan via mail ipv de thread hier te verzieken.
Sorry hoor, maar als ik lees: goh
Tja. Sorry dat jij daar een probleem mee hebt dan.


Ik vraag me trouwens af waarom ik hier mijn acties tov jou zou moeten verdedigen.
Je kan ook iemand gewoon uitleggen dat bepaalde zaken terug te vinden zijn in de help op een vriendelijkere en geduldiger toon.
Ik stel voor dat je eens mijn volledige post-history in P&W doorneemt.
Succes.

[ Voor 4% gewijzigd door whoami op 25-05-2005 15:34 ]

https://fgheysels.github.io/


  • Karel V
  • Registratie: November 2003
  • Laatst online: 18-12-2025

Karel V

Een simpele ziel

Die FreeOnTerminate zet je gewoon op false bij stukken code waar hij niet zomaar mag stoppen, en als dat gedeelte waar niet gestopt mag worden afgelopen is zet je hem weer op true.
Dat beveiligd toch je hele code?

The old Lie: Dulce et Decorum est Pro patria mori


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Nee.

In je thread moet je checken op de waarde van Terminated daar op die plaats waar het veilig is om de thread te beëindigen.
Als Terminated op true staat, dan beëindig je daar je thread.

bv:
dit is code die op je andere thread wordt uitgevoerd:
code:
1
2
3
4
5
6
7
8
9
10
11
while( ... )
{
    DoImportantStuff();

    DoOtherImportantStuff();

     if( Terminated )
     {
          break;
     }
}


Die FreeOnTerminate is gewoon een property die intern afgehandeld wordt.

https://fgheysels.github.io/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 10:04
Voor hetgeen dat de TS wil is absoluut geen tweede thread nodig. ( Afgezien van de educatieve waarde natuurlijk )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Een Timer zou idd veel eenvoudiger zijn, en zeker afdoende zijn.

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Karel V schreef op woensdag 25 mei 2005 @ 14:54:
En hier de uitleg van C++ BUILDER (En lees nu eens de help in C++ Builder Whoami.............. :+ )
Misschien moet je zelf beter lezen, want wat daar staat komt niet overeen met hetgeen jij zegt. Die FreeOnTerminate property geeft alleen maar aan dat de resources die geownd worden door de thread vrijgegeven worden op het moment dat de thread stopt. De reden van het bestaan van de property is omdat je de ene keer geen moer geeft om de resources van een thread en liever gewoon wil dat ze worden vrijgegeven, terwijl je de andere keer de resources na een thread shutdown nog wil gebruiken in een andere thread.

De Terminate() methode zet simpelweg een vlaggetje dat de thread mag beeindigen, maar dat zal de thread niet stoppen. Als je code gewoon doorgaat met z'n loop dan zal de thread ook niet vanzelf stoppen, hier moet je zelf op controleren, zoals whoami een paar posts hierboven me al aangeeft.

Daarnaast is een thread niet een draad naast je "hoofdprogramma", wat dat ook moge zijn. Het is een context waarin programmacode wordt uitgevoerd, en er kunnen meerdere van die contexts zijn in je proces. Een proces begint standaard met 1 thread, en dat is wat jij waarschijnlijk bedoelt met "hoofdprogramma", maar dat is net zo goed een thread als elke andere.

Verder: voor opmerkingen over het modden of over hoe een mod reageert zijn andere manieren gereserveerd dan in de draad zelf posten, het zou fijn zijn als de inhoud van de draad niet verloren gaat door gezever over hoe iemand iets brengt. Die andere manieren zijn: topicreport plaatsen, topic openen in Schop een Modje, mail sturen (naamvanmoderator@tweakers.net), en als je het algemene beleid aan wil kaarten kan dat in Lieve Adjes. Zat mogelijkheden, dus geen reden om hier daarover verder te gaan.

[ Voor 17% gewijzigd door .oisyn op 25-05-2005 16:37 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
whoami schreef op woensdag 25 mei 2005 @ 16:14:
Een Timer zou idd veel eenvoudiger zijn, en zeker afdoende zijn.
Eh, Borland Timers draaien toch ook in de main thread? Dan gaat het hoofdprogramma niet door. Communiceren met een telnet server is typisch een background task die je dus niet via een timer in de main thread wil doen.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-05 14:03

curry684

left part of the evil twins

whoami schreef op woensdag 25 mei 2005 @ 16:14:
Een Timer zou idd veel eenvoudiger zijn, en zeker afdoende zijn.
Wat overigens de reden is dat ik vroeg op welk platform ie bezig was, want met een TTimer componentje in C++ Builder heb je dit in een minuutje opgelost zonder concurrency problem en leaking resources.
MSalters schreef op woensdag 25 mei 2005 @ 23:34:
[...]

Eh, Borland Timers draaien toch ook in de main thread? Dan gaat het hoofdprogramma niet door. Communiceren met een telnet server is typisch een background task die je dus niet via een timer in de main thread wil doen.
Voor zover ik het begrijp is het geen GUI maar een trayproggel of zo die eens per uur even 2 seconden connect, en dan maakt het niet uit. Maar zelfs al zou blokkeren volstrekt ongewenst zijn is de kwestie fout opgelost middels een continu lopende 2e thread, dan hoor je namelijk ieder uur in een OnTimer event even een workerthread te lanceren die snel het achtergrond werk doet imho.

[ Voor 50% gewijzigd door curry684 op 26-05-2005 01:22 ]

Professionele website nodig?

Pagina: 1