AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread gegen sich selbst absichern

Ein Thema von DelphiManiac · begonnen am 12. Jun 2008 · letzter Beitrag vom 12. Jun 2008
 
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Thread gegen sich selbst absichern

  Alt 12. Jun 2008, 10:25
Hallo,

ich habe folgendes Problem.
Ich nutze eine Thread (nur den Hauptthread also den GUI-Thread)

Jetzt habe ich eine Procedure: (ist natürlich nur ein Beispiel)


Delphi-Quellcode:
procedure SchreibeLese;
begin
  Schreibe
  Application.ProcessMessages;
  Lese;
end;

Diese Funktion wird nun in einem Timer alle 100 ms aufegerufen.

Jetzt passiert ein Asynchroner Zugriff auf die Procedure über ein ButtonClick.

Wie kann ich sicher gehen, dass die Procedure nie nochmals aufgerufen wird wenn sie gerade aufegerufen worden ist.

Jetzt ist es ja durch das Application.ProcessMessages möglich, dass genau in dem Zeitpunkt (zwischen Schreiben/Lesen)
die Funktion nochmals aufgerufen wird, richtig?

Natürlich könnte man eine Steuervariable verwenden, aber das ist für meinen Fall nicht so gut geeignet.

Gibt es eine Synchronisationsmöglichkeit im eigenen Thread,
CritcalSections sind ja Threadübergreifend...

Hoffe ich habe mich nicht zu unklar ausgedrückt

Gruß
DM

//EDIT: Delphi Code Tags vergessen
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz