AGB  ·  Datenschutz  ·  Impressum  







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

Default-Wert aus Funktion nach timeout (D6)

Ein Thema von myicq · begonnen am 31. Jul 2019 · letzter Beitrag vom 31. Jul 2019
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.716 Beiträge
 
Delphi 12 Athens
 
#1

AW: Default-Wert aus Funktion nach timeout (D6)

  Alt 31. Jul 2019, 08:22
Threads und Trivial gehen in der Regel nicht zusammen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.221 Beiträge
 
Delphi 12 Athens
 
#2

AW: Default-Wert aus Funktion nach timeout (D6)

  Alt 31. Jul 2019, 08:25
Hier zumindest mal ein sehr gutes Thread-Tutorial für den Anfang, von Daniel.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.208 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Default-Wert aus Funktion nach timeout (D6)

  Alt 31. Jul 2019, 08:34
Diese Komponenten haben i.R. einen eigenen TimeoutTimer, welcher einfach nur auf eine Sekunde reduziert werden müsste.
Aber auch bei weitem leider nicht überall. Es gibt Dinge bei denen man nicht kontrollieren kann wie lange sie maximal blockieren.


Viel einfacher wäre es, wenn die Lizenzbedingungen es zulassen, von einer bald 20 Jahre alten Entwicklungsumgebung auf etwas neueres zu wechseln das z.B. "Tasks" hat. Dann sieht es in Delphi nur noch so aus:

Delphi-Quellcode:
function TForm1.holeNetzwerkDaten(): Integer;
begin
   TThread.Sleep( Random(1000) );
   Result := 42;
end;

function TForm1.holeNetzwerkDaten(const timeoutMs: Word): Integer;
const
   standardWert: Integer = 99;
var
   future: IFuture<Integer>;
begin
   future := TTask.Future(
      function(): Integer
      begin
         Result := holeNetzwerkDaten();
      end
   );
   if future.Wait(timeoutMs) then
      Result := future.Value
   else
      begin
         future.Cancel();
         Result := standardWert;
      end;
end;
Könnte so einfach sein 😉
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.221 Beiträge
 
Delphi 12 Athens
 
#4

AW: Default-Wert aus Funktion nach timeout (D6)

  Alt 31. Jul 2019, 08:40
Ja, neuers Delphi würde auch mit Omnithread Library gehen.
http://www.omnithreadlibrary.com/boo...l#introduction

Da steht zwar bis runter zu D2007, könnte aber sein das auch Teile schon ab D6 funktionieren
(vielleicht hat da ja jemand hier Erfahrung ob das läuft).
  Mit Zitat antworten Zitat
Antwort Antwort

 

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:41 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