AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Execption innerhalb AnonymousThread behandeln
Thema durchsuchen
Ansicht
Themen-Optionen

Execption innerhalb AnonymousThread behandeln

Ein Thema von Kostas · begonnen am 29. Sep 2014 · letzter Beitrag vom 30. Sep 2014
 
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#1

Execption innerhalb AnonymousThread behandeln

  Alt 29. Sep 2014, 22:55
Hallo Zusammen,

ich versuche gerade die Methode GetGruppen in einem AnonymusThread zu packen.
Dabei stellen sich mir eine Menge Frage. Die Methode GetGruppen ist in einem Adroid Mobile Projekt
und ruft über die Methode DataModule1.ServerMethods1Client.GetGruppen ein Dataset aus einem DataSnap Server
und speichert das Ergebnis in ein lokales JASONDataSets Object. Das dürfte im Thread noch keine Probleme machen
das keine Aktionen Objkte auf dem MainThread tangieren.
Die Methode UpdateGruppenNames jedoch packt das JASONDataSets in einer FDMemTable die auf der MainForm liegt.
Mir ist bekannt dass nur der MainThread auf Objekte der Form zugreifen darf. Ist jetzt eine FDMemTable
ebenfalls davon betroffen oder nur Objekte die etwas anzeigen wie z.B.: TLabel, TListView u.s.w.?


Die nächste Frage, was ist mit der Exception innerhalb des Threads, darf ich die ShowMessageFmt werfen
oder muss das in einem TThread.Synchronize erfolgen?


Ohne Thread
Delphi-Quellcode:
procedure TfrMobileMain.GetGruppen;
var
  LDataSetList: TFDJSONDataSets;
begin
  try
    //vom DataSnap Server ein DataSet abrufen
    LDataSetList := DataModule1.ServerMethods1Client.GetGruppen;

    //das DataSet in die MemTable packen
    UpdateGruppenNames(LDataSetList);
  except
    on E: TDSRestProtocolException do
      HandleRestException(DataModule1.DSRestConnection1, 'Get Gruppen error', E);
    on E: Exception do
      ShowMessageFmt('Fehler: %s',[E.Message]);
    else
      raise;
  end;
end;

Mit Thread
Delphi-Quellcode:
procedure TfrMobileMain.GetGruppenThreaded;
begin
  TThread.CreateAnonymousThread(procedure ()
  var
    LDataSetList: TFDJSONDataSets;
  begin
    try

      LDataSetList := DataModule1.ServerMethods1Client.GetGruppen;
      UpdateGruppenNames(LDataSetList);

// TThread.Synchronize (TThread.CurrentThread,
// procedure ()
// begin
// end);


    except
      on E: TDSRestProtocolException do
        HandleRestException(DataModule1.DSRestConnection1, 'Get Gruppen error', E);
      on E: Exception do
        ShowMessageFmt('Fehler: %s',[E.Message]);
      else
        raise;
    end;

  end).Start;{TThread}

end;
Gruß Kostas
  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 01:52 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