Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi aus liste löschen wenn timer die liste verwendet? (https://www.delphipraxis.net/34726-aus-liste-loeschen-wenn-timer-die-liste-verwendet.html)

Pseudemys Nelsoni 27. Nov 2004 12:26


aus liste löschen wenn timer die liste verwendet?
 
moin,

ich wollte mal fragen wie das ist, wenn ich z.b einen timer habe der alle 500ms ein array überprüft, d.h es durchläuft... wie sieht das da aus wenn ich ber button mal ein item aus dem array lösche? da ein timer ja parallel läuft kann es da sein das ich mal ausversehen etwas aus dem array lösche während der timer gerade darauf zugreift und ihm am ende nachher einitem fehlt(fehler) ?

Sharky 27. Nov 2004 12:41

Re: aus liste löschen wenn timer die liste verwendet?
 
Verhindere doch einfach über ein Flag das ein Eintrag gelöscht wird während deine Timer-Funktion aktiv ist.

Pseudemys Nelsoni 27. Nov 2004 12:49

Re: aus liste löschen wenn timer die liste verwendet?
 
hi sharky, der time rist abe rimmer aktiv..

ich schreibe gerade einen irc server und ich weiss nicht wie ich den PING?..PONG! kram hinkriegen soll... ich hab es bis jetzt so das jeder user einen eigenen timer hat, der wenn er aktiv ist nach einer bestimmtem zeit (wenn vorher kein pong vom client gesendet wurde) die verbindung schliesst. der server hat dann auch noch einen timer, der jede sekunde eine liste überprüft die so aussieht:

Timer - Ticks

timer ist dabei ein pointer auf den entsprechenden timer, er wird aktiviert sobald ticks 30000ms unter der aktuellen zeit ist... wenn ich den user dann disconnectet hab und aus dem array draussen, muss ich ihn ja auch noch aus dieser liste löschen, nur wenn der timer gerade drauf zugreift könnte das ja vielleicht fehler erzeugen....hm

MasterC 27. Nov 2004 18:49

Re: aus liste löschen wenn timer die liste verwendet?
 
Guck dir doch mal den Source der Indy IRC Server Komponente an. Vieleicht hilft dir das.

Pseudemys Nelsoni 27. Nov 2004 18:54

Re: aus liste löschen wenn timer die liste verwendet?
 
ne, da wird nur das on PING/PONG event abgefragt, code dafür ist nicht drin.

meine Frage ist eigentlich:

Sagen wir mal ich habe eine stringlist mit 1000 Einträgen, diese Liste durchlaufe ich per Timer alle 5 Sekunden, so, nun habe ich aber noch einen button auf meiner form, wenn ich diesen anklicke wird Item-500 aus der liste entfernt! was ist nun aber wenn ich das item gerade dann entferne, während der Timer die liste durchläuft? dann stimmt doch der index nichtmehr oder? oder wird das irgendwie synchronisiert?

Chewie 27. Nov 2004 20:12

Re: aus liste löschen wenn timer die liste verwendet?
 
Zitat:

Zitat von Pseudemys Nelsoni
was ist nun aber wenn ich das item gerade dann entferne, während der Timer die liste durchläuft?

Sofern du keine eigenen Threads angelegt hast, passiert das nicht, da die Timer-Routine im gleichen Thread läuft wie deine Button-Klick-Behandlungsroutine. Solle heißen: Es wird nichts gleichzeitig ausgeführt.
Anders siehts natürlich aus, wenn du das ganze in zwei verschiedenen Threads ablaufen lässt. Da musst du Zugriffe auf gemeinsam benutzten Speicher synchronisieren.

Pseudemys Nelsoni 27. Nov 2004 20:23

Re: aus liste löschen wenn timer die liste verwendet?
 
vielen dank :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz