, zei ooit, en de door het Verenigd Koninkrijk op je aanvraag vonden gebeurtenissen en niet omdat de heer VCL draad is uitgevoerd?,,, september 2000, en van het auteursrecht, de bescherming van het auteursrecht, alle rechten voorbehouden.,,,,,, Steve zimmelman, eisen vaak is de moeder van de uitvinding, dit is geen uitzondering.Hoewel ik het werk van Microsoft in enkele woorden /vormen van integratie, er zich een probleem voordoet, is de behandeling van het dossier van mijn eigendom van valse voor de vis.De tekst geeft een dialoog (de gebruikers niet), wacht op een reactie.Oké, zonder dat dit van toepassing is, want het lijkt te hangen.Ik moet een manier om om te gaan met de behandeling van dingen en ze zou te lang duren.Dus heb ik voor de vorming van TTimer component, die voor de periode 1 000 (1) berekening van het aantal incidenten en de uitvoering van de timer.Dat klinkt goed, hè?Fout!Als het woord dialoog zelf, het is gebruik te maken van de voornaamste VCL draad om de andere processen, met inbegrip van ttimer.Dus, nogmaals, de toepassing van het ophangen.,,, is de oplossing van het creëren van een draad, kunnen volgen of de tijd VCL draad is druk bezig.Maar als het creëren van een draad, ik moet deze functie en niet vanuit het oogpunt van een object van de beste oplossing.Dus maakte ik een nieuwe vergadering van de timer kan creëren en het gebruik van hun eigen interne draad en de uitvoering van een bepaalde tijd voor de gebeurtenissen van de tthreadtimer.,,, de resultaten van de vergadering.Dit is het beheer van de interne tcomponent draad van een eenvoudige les.De draad is door de vergadering creëren en vernietigen.Als je de juiste eigenschap is, de draden zijn gecreëerd, als de fouten, het is vernietigd.Ik wilde er ook voor zorgen dat in de ontwerp -, de draad niet worden gecreëerd.Dus ik Controleer vóór de uitvoering van een methode componentstate:,,,,, programma 's tthreadtimer. Setenabled (waarde: booleaanse);,,,, als (waarde < > fenabled) en het begin van fenabled:= waarde;,,,, /niet tot de dood of draad, tenzij de aanvraag, /.,, als het niet csdesigning in componentstate), en dan beginnen, als fenabled dan beginnen, ftimereventcount:= 0;,,, fthread:= tthethread. Het creëren van (zelf); en andere, killthread, vanaf het einde van het,,,,,,,,,,, aan het einde van Het einde;;;,,,,, ik het gebruik van de methode voor de uitvoering van dat killthread stoppen. En vrij te laten.Ik eigenlijk in de vernietiging van draad, voordat ik het nodig om ervoor te zorgen dat de relevante gebeurtenissen in de loop van de behandeling van niet in.Als een rode draad worden vrijgelaten, en de gebeurtenissen ten uitvoer worden gelegd, zal een uitzondering, omdat in dit geval zal de terugkeer van een niet meer bestaande draad.Ik dit een eenvoudige variabelen, fontimereventinprogress, gestart met de uitvoering van de doodstraf voor gebeurtenissen die echt de timer, en de overgang naar de valse net klaar:,,,,,,,, te beginnen met de procedure tthreadtimer.killthread;, proberen fenabled:= valse;,,,, als (fthread < > Dan kunnen beginnen, zonder), //////////////ontimerinterval gebeurtenissen wachten, en vóór de voltooiing van de draad en beëindiging van fthread fontimereventinprogress.,,.,, aan het begin en einde van application.processmessages;,,,,,,,, fthread. Beëindigen; fthread. Vrijheid,,,,, tot slot, aan het einde van fthread:= nul; ftimereventcount:=; 0;,,,,,,,,,,, aan het einde van het omdat;;Elektronische componenten, met inbegrip van voorwerp en doel van een draad draad nodig verwijzingen naar specifieke onderdelen van de eigenschappen en de methoden voor het creëren van een draad, ben ik de eigenaar vangen referentie,,,,, tthethread fabrikant: de fabrikant. Het creëren van (aowner:tthreadtimer); begin fontimereventinprogress:= vals,,,,,,, /en we moeten toegang hebben tot sommige eigenaren,. ///////de prestaties van de draad, fowner:= aowner;.,,, die tot een (pseudo); aan het einde van,,,,,,,, - het object zelf is eenvoudig.Het is een fabrikant, uitvoering, en een ontimer methode.Voor de uitvoering van de uitvoering in het creëren van fabrikant tot uitvoering na, methoden te trekken nog steeds in leven te houden.Ik gebruik om beëindiging van de eigendom, de draad levend, tot de duidelijke eisen in te trekken.Als de draden van beëindiging van de methode wordt toegepast, en tot beëindiging van die waar zijn.In het kader van de tenuitvoerlegging van fietsen, ik met een simpel - () de opschorting van draad wacht op bepaalde tijdstippen.Ik application.processmessages om ervoor te zorgen dat de informatie aan de uitvoering van alle draden van de timer voor de gebeurtenissen.Ik heet synchronizeevent in de belangrijkste bestanddelen met inbegrip van eigendom.Dat maakt tthreadtimer gedraagt zich als een standaard TTimer vergadering, door middel van een gebeurtenis en de belangrijkste VCL draad:,,,,,,, de uitvoering van programma 's tthethread.; beginnen, in plaats van op zichzelf. Het begin,,,, application.processmessages; slapen (fowner. Afstand);,,,, als fowner.synchronizeevent application.processmessages; en dan, een (ontimer), andere,,,,,,, aan het einde van het ontimer;;;,,,,,,,, de inleiding van de procedure tthethread.ontimer; proberen, als opdracht (fowner. Fontimerinterval) en het begin van de fowner, als. Dan beginnen,, fontimereventinprogress:= waar;,, Inc. (fowner.,, fowner.fontimerinterval ftimereventcount);(fowner);,,,,,, aan het einde van het laatste,;; fontimereventinprogress:= valse;,,,,,,,,, aan het einde van de vergadering; aan het einde van tthreadtimer; er zijn drie dingen nodig: draad, intervallen, en timerevent.Zoals eerder vermeld, de draad wordt gecreëerd en de vernietiging van de eigendom.Als een rode draad door het creëren van een positieve ontimerinterval timer is, na de gebeurtenissen van de periode van uitvoering van de aangewezen is.,,, en een functie is de timereventcount is dit niet haar naam.Het voegt een integer, elke keer als ontimerinterval gebeurtenissen worden verwerkt.Dit kan voor zien van potentiële time - out.Bijvoorbeeld, heb je misschien een interval van 1000 (een), en de gebeurtenissen van de val, timereventcount > = 60.Dus als het geval de uitvoering van 60 keer per minuut is voorbij, je moet in de aanvraag om een aantal dingen.Maar onthoud, de timer is een afzonderlijke draden, dus probeert te manipuleren in de draad van andere VCL object kan leiden tot afwijkingen.,,, in de oprichting van een threadtimer object, hoe lang de timer kan worden bijgewerkt dat gebeurtenissen in de draad van een VCL object is bezig.Bijvoorbeeld, als je op de tafel worden verwerkt en weergave van de resultaten voor de aanwijzing van TLabel controlelijsten geregistreerd, heb je pech.TLabel zou wachten tot de draad om het bijwerken.Dus terug naar de spreekwoordelijke tekentafel een.,,, ik vond het in de meeste gevallen gebruik te maken van de draad niet bijgewerkt.Dus maakte ik een nieuw etiket voor onderdelen als bedoeld in tcanvaslabel.Tcanvaslabel is een kleine klasse, en alleen met de opstelling van het canvas eigenschap.,,, ik kan het tcanvaslabel als een label en een bar.De prestaties van de fillpercent gevuld, en worden gebruikt voor de etikettering, de verf op het doek van een deel van de verschillende kleuren.Verf voor de weergave van de inhoud van de voor de etikettering:,,,,,,, programma 's tcanvaslabel. Verf; var, de rechthoek:;,, fleft, ftop: gehele getal;,,,, ///////de omvang van de bestanden worden vastgesteld voor valse etiketten, en, voor de belangrijkste. //////////////andere), draad. Als de omvang van de bestanden en setsize;,,,,,, rechthoekig: = clientrect; ///////verf. De belangrijkste is licht van kleur. Canvas.brush.style:= bssolid;,,,,,, canvas.brush.color:= zelf. De kleur van het canvas,; (clientrect);,,, als (fillpercent > 0) en ffill dan beginnen berekening van het percentage van het,, ///////.,, rechthoekig. Rechts: = trunc ((rect.right *,, (fillpercent /100))); canvas.brush.color:= geregeld;,,,, CANVAS. Met behulp van (vak);,,,,,, aan het einde van bsclear; canvas.brush.style:=; de route taleftjustify:,,,,,,,,,,, fleft:= 0; aan het einde van tarightjustify:,,,,,, fleft:= clientrect. Rechts, textwidth, canvas. (vertaling);,,,, aan het einde van tacenter:,,,,,, fleft:= trunc ((clientrect.right,, canvas. Textwidth (vertaling)) /2);,,,,,,, aan het einde van het;; in het geval van de lay - out van tltop:FTOP:= 0;,,,,,, tlcenter: FTOP:= trunc ((clientrect.bottom, hoogte, tekst, het doek. (vertaling)) /2);,,,, tlbottom:FTOP:= (self.height, de hoogte van het woord na. (vertaling));,,,,, te beëindigen;Het canvas. TextOut (fleft, ftop, ondertiteling);,, ///////kracht doek te vernieuwen.,,.,, aan het einde van het canvas.;,,,,,, een paar van je aandacht nodig als het gebruik van gebeurtenissen, met de waarschuwing: draad,,,,,, autosize eigendom niet van toepassing tcanvaslabel moeten rennen. Programma 's.Aanpassing van de belangrijkste VCL draad met het etiket, dus de etikettering niet bijgewerkt.,,,,,, met inbegrip van de draden in je natuurlijk niet van enig incident VCL object niet normen volledig getest, of uitsluitend tot oprichting van deze code in de draad.,,,,,,, het gebruik van deze vergadering Kan op eenvoudige demonstratie in in de begeleidende documenten.Eenvoudige aanvraag blijkt, een standaard Timer, en door het Verenigd Koninkrijk tthreadtimer component in het onderscheid tussen een ontdekking en door het Verenigd Koninkrijk,.,, de gebeurtenissen en de huidige tijd een tweede TLabel.Het creëren van een druk in de loop van het verzoek om aanvullende gegevens, in een cyclus van 10.000.,,,,,, je merkt, op in de loop van de tijd toe te voegen, dat ttimer stoppen en andere etiketten normen op bepaalde tijdstippen, bijgewerkt.
Multi - threaded timer
Previous:Wat is een TFrame?
Next Page:De veelhoek?