![]() |
TCriticalSection und Timeout
Morjn...
Hat jemand ne Idee wie man einer CriticalSection einen Timeout zuweisen kann? Das Programm soll x Sekunden auf eine kritische Sektion warten und falls die Zeitspanne überschritten wird, soll der Code der in der kritischen Sektion steht nicht ausgeführt werden. Ich möchte dafür nicht unbedingt einen Timer verwenden... |
Re: TCriticalSection und Timeout
ein Timeout ist meines Wissens mit CriticalSections nicht realisierbar... ausser Du pollst mittels TryEnter eine gewisse Zeit lang, bis die Section entweder frei wird, oder die Zeit abgelaufen ist (nicht gerade eine schöne Lösung; viele Context-Switches für nichts und wieder nichts)...
besser wäre es, dazu ein Mutex zu verwenden... beim "Betreten" des Mutex mit WaitForSingleObject kannst Du auch ein Timeout definieren.... ![]() ![]() |
Re: TCriticalSection und Timeout
Klingt gut, das werd ich mir mal ansehen...
TryEnter gibs bei D7 EP übrigens nicht :/ |
Re: TCriticalSection und Timeout
Zitat:
![]() |
Re: TCriticalSection und Timeout
So gehts mit TEvent (syncobjs)
Delphi-Quellcode:
case lvEvent.WaitFor(1000) of
//Das Signal für das Ereignisobjekt wurde gesetzt. wrSignaled :; //Die im Parameter TimeOut angegebene Zeitspanne ist verstrichen, ohne dass das Signal gesetzt wurde. wrTimeOut :; //Das Ereignisobjekt wurde gelöscht, bevor das TimeOut-Intervall verstrichen ist. wrAbandoned :; //im Warten ist ein Fehler aufgetreten. Überprüfen Sie die Eigenschaft LastError. Der Fehlercode in LastError enthält nähere Informationen. wrError :; end; |
Re: TCriticalSection und Timeout
Ui das is genau das was ich brauche... Super, danke :>
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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