Toon posts:

[Delphi] getEvent ? (status)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hé,

Ik maak gebruik van een event om in een thread vanuit de db zooi in te lezen. Dit doe ik nu nog om de zoveel seconden. Maar het kan ook gebeuren dat de data ergens anders vandaan gehaald moet worden. Vandaar dit event. Alleen hoe kan ik de status van dit event checken in deze thread. Hoe kan ik zien of deze geset is of niet. Ik heb gezocht, maar kon geen getEvent vinden bijvoorbeeld.

Het is ook geen optie om waitforsingle/multipleobject te gebruiken omdat er wel een loop moet blijven doorlopen.

Grtz from 5137! :P

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Bedoel je dat je wilt weten of een bepaald event een event-handler heeft ?
Gebruik dan Assigned.
code:
1
if Assigned (Button1.OnClick) then begin


Als je iets anders bedoeld, dan moet je wel ff je probleem beter omschrijven

[ Voor 14% gewijzigd door whoami op 25-06-2003 12:15 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Het event heeft een handle. Alleen wil ik kunnen kijken of de setEvent al uitgevoerd is.
Daarop kan ik dan in de thread reageren en de data vanaf een andere plek gaan uitlezen. En daarna zal ik de resetEvent weer aanroepen, zodat het weer opnieuw begint.

Ik hoop dat het zo iets duidelijker is.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Misschien even een idee om de docs op WaitForSingleObject door te lezen en dan vooral die 'Timeout' parameter en de 'Remarks'-sectie mbt speciale situatie van timeoutwaarde 0.

Beetje nogal RTFM vind je zelf ook niet? :?

Professionele website nodig?


  • Schmoove
  • Registratie: Juli 2001
  • Laatst online: 20-08 11:58
curry684 schreef op 25 June 2003 @ 12:30:
Misschien even een idee om de docs op WaitForSingleObject door te lezen en dan vooral die 'Timeout' parameter en de 'Remarks'-sectie mbt speciale situatie van timeoutwaarde 0.

Beetje nogal RTFM vind je zelf ook niet? :?
Als je niet weet waar je het moet zoeken mag je dit toch gewoon vragen of niet dan?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Schmoove: hij zegt zelf dat WaitForSingleObject geen optie is terwijl het de hele oplossing van z'n probleem is. Hij weet dus wel waar ie het moet zoeken.

Professionele website nodig?


Verwijderd

Topicstarter
Ké, sorry als ik wat onduidelijk ben, maar waitforsingleobject was in dit geval naar mijn idee geen oplossing. En jah, ik heb de timeout parameter wel gezien.

mmm, k, dan maar zo:

-----------------------------------------------------------------
while not terminated do
begin
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('inlezen info uit tabelltje);
ADOQuery3.Open;
count:=ADOQuery3.fieldbyname('numrecs').AsInteger;
if count <> "count van result eerder" then
begin
inlezen data;
count:=count van result eerder;
end;
sleep(10000);
end;
-----------------------------------------------------------------

En nu wil ik dus eigenlijk ook een if-statement die de status van het event checkt, of deze al geset is ja of nee. Aangezien er dus ook gecheckt moet worden of er records toegevoegd worden of verwijderd kan ik geen waitforsingleobject gebruiken, toch? Correct me if i'm wrong, ik ben geen expert...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Wat exact is het probleem met die sleep vervangen door WaitForSingleObject(myEvent.GetHandle, 10000) :?

En uit WaitForSingleObject docs:
If dwMilliseconds is zero, the function tests the object's state and returns immediately.

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

En daarna zal ik de resetEvent weer aanroepen, zodat het weer opnieuw begint.
Dit is trouwens uit den boze. Zorg dat het event geen manual-reset event is en hij zal automatisch resetten zodra een waiting thread met WaitForSingleObject 'gereleased' is. Hiermee voorkom je nogal wat multithreading hell. Zie CreateEvent docs.

Professionele website nodig?


Verwijderd

Topicstarter
Damn, /me krabt aan z'n hoofd... 8)7
Ik zie nu het probleem ook niet....ik keek over dat argumentje heen, wh00ps.
Thnx in ieder geval...coffee-time! :)

[ Voor 69% gewijzigd door Verwijderd op 25-06-2003 13:29 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ga maar hard koffie pakken ja :z

Professionele website nodig?


Verwijderd

Topicstarter
Volgens mij moet ik wel manual reset doen, want:

"When the state of an auto-reset event object is signaled, it remains signaled until a single waiting thread is released"

De thread blijft bestaan, dit is een loop die de data blijft monitoren. Wanneer de thread blijft bestaan, wordt het event niet gereset, toch?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Zodra WaitForSingleObject met WAIT_OBJECT_0 terugvalt wordt een autoreset event 'atomic' gereset. Hiermee voorkom je dat er meerdere threads die op hetzelfde event wachten gereleased worden.

Lees dit nou eens :Y)

[ Voor 5% gewijzigd door curry684 op 25-06-2003 13:37 . Reden: eep verkeerde URL ]

Professionele website nodig?

Pagina: 1