AGB  ·  Datenschutz  ·  Impressum  







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

W1000 Symbol 'Resume' ist veraltet ????

Ein Thema von RaSoWa1 · begonnen am 28. Mär 2010 · letzter Beitrag vom 24. Aug 2011
Antwort Antwort
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

W1000 Symbol 'Resume' ist veraltet ????

  Alt 28. Mär 2010, 13:01
Hallo,

bei einem Projekt in dem ich Threads verwende kommt jetzt mit D 2010 folgende Warnung:
Zitat:
[DCC Warnung] ClassAlbum.pas(2068): W1000 Symbol 'Resume' ist veraltet
Lt. Online-Hilfe soll zum Start des Threads aber Resume verwendet werden.

Ist das ein Bug in D 2010?

Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.313 Beiträge
 
Delphi 12 Athens
 
#2

Re: W1000 Symbol 'Resume' ist veraltet ????

  Alt 28. Mär 2010, 13:11
Delphi-Quellcode:
// This function is not intended to be used for thread synchronization.
procedure Resume; deprecated;

// Use Start after creating a suspended thread.
procedure Start;

// This function is not intended to be used for thread synchronization.
procedure Suspend; deprecated;
Was ein Blick in die Sourcen so leisten kann.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#3

Re: W1000 Symbol 'Resume' ist veraltet ????

  Alt 28. Mär 2010, 13:11
Also wenn man bei Delphi selber guckt, steht dies im Source:
Delphi-Quellcode:
    // This function is not intended to be used for thread synchronization.
    procedure Resume; deprecated;
    // Use Start after creating a suspended thread.
    procedure Start;
Lars
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#4

Re: W1000 Symbol 'Resume' ist veraltet ????

  Alt 28. Mär 2010, 14:02
Danke an euch.

Also ein Bug der Online-Hilfe.
Denn da steht:
Zitat:
Classes.TThread.Create
.....
Mit Create erzeugen Sie einen Thread in einer Anwendung. Wenn CreateSuspended den Wert false hat, wird Execute sofort aufgerufen. Andernfalls erfolgt der Aufruf erst nach einem Aufruf von Resume.
aber auch:
Zitat:
Classes.TThread.Start
......
Beginnt die Ausführung eines Threads.

Rufen Sie Start auf, um das Ausführen eines im unterbrochenen Status erzeugten Threads zu starten. Um ein Thread im unterbrochenen Status zu erzeugen, übergeben Sie true an den Konstruktor des Threads. Für die Threads, die im unterbrochenen Status nicht erzeugt wurden, hat Start keine Auswirkung.

Anmerkung: Die Methode Resume ist veraltet und seine Verwendung soll vermieden werden. Verwenden Sie stattdessen die Methode Start.
Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 22. Aug 2011, 21:22
Ich sehe Suspend ist veraltet...
aber was verwenden an stelle dessen?

Werde aus euren Beiträgen nicht so richtig schlau.

OK für Resume nehme ich Start..
aber für Suspend ?

EDIT:
Terminate?

gruss

Geändert von EWeiss (22. Aug 2011 um 21:36 Uhr)
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#6

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 22. Aug 2011, 21:39
Suspend sollte man ganz vermeiden, da man nie wissen kann in welchem Augenblick man den Thread damit erwischt - schwer zu findende Deadlocks sind so vorprogrammiert. Besser Terminate oder ein eigenes Flag(Boolean/Event/Semaphore..) verwenden um den Thread ggf. an einer kontrollierten Stelle warten zu lassen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 22. Aug 2011, 22:01
Suspend sollte man ganz vermeiden, da man nie wissen kann in welchem Augenblick man den Thread damit erwischt - schwer zu findende Deadlocks sind so vorprogrammiert. Besser Terminate oder ein eigenes Flag(Boolean/Event/Semaphore..) verwenden um den Thread ggf. an einer kontrollierten Stelle warten zu lassen.
Wenn ich so wie vorgeschlagen Suspend mit Terminate ersetze..
bzw. Resume mit Start dann geht bei mir gar nichts mehr.

Hmmmm ... Dann besser so belassen und mit den Warnungen leben?

gruss
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#8

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 22. Aug 2011, 23:01
Hmm.. wenn property Terminated wie in älteren Versionen ReadOnly ist und .Start das scheinbar auch nicht zurücksetzt ist es natürlich keine Lösung - dann kann man den Thread auch freigeben und einen neuen erzeugen.. das Konzept scheint mal wieder sehr gut durchdacht zu sein

Idee:
Delphi-Quellcode:
type
  TMyThread = class(TThread)
  private
    FHalted: Boolean;
    procedure SuspendIfHalted;
  public
    procedure Halt;
    procedure Continue;
  end;

  procedure TMyThread.Halt;
  begin
    FHalted := True;
  end;

  procedure TMyThread.Continue;
  begin
    FHalted := False;
    ResumeThread(Handle);
  end;

  procedure TMyThread.SuspendIfHalted;
  begin
    if FHalted then
      SuspendThread(Handle);
  end;

  procedure TMyThread.Execute;
  begin
    repeat
      EntercriticalSection;
      ..
      LeaveCriticalSection;
      ..
      //sichere Warteposition ausserhalb Lock
      SuspendIfHalted;
    until Terminated;
  end;
Zu jedem "Terminate" gehört dann natürlich ein "Continue" um den Thread ggf. aufzuwecken.

Alternativ zu SuspendIfHalted ohne echtes Suspend-/ResumeThread:
while FHalted and not Terminated do Sleep(10);

Grüsse, Dirk
  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 01:02 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 by Thomas Breitkreuz