Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.006 Beiträge
 
Delphi 12 Athens
 
#8

AW: MultiThreading

  Alt Gestern, 12:43
Und wenn man Feedback und Fehlerbehandlung braucht so
Delphi-Quellcode:
Type
TResultData = Record
  Success:boolean;
  Error:String;
  Data:Tarray<TMyItemdataRec>;
end;

myform.OnClick(Sender:tObject);
Bgein
  MyGUIListview.enabled := false;
  MYGUiAnyIndicator.visibe := true; // Anzeige Animation im Hauptthread das die Liste aktualisiert wird.
  
  TThread.CreateAnonymousThread(
      procedure// ThreadProcedure
      Begin
        var aResult:TResultData := LoadDataForaShitLoadOfTime; // das dauert.
        If aResult.Success then
        Begin

          //laden fertig ? ok call back in den GUI Thread mit ForceQueue,
          // es kann sein dass der Thread schneller fertig ist als die GUI
          // braucht um die liste disabled neu zu zeichnen und ich mag
          // es in der richtigen Reienfolge wegen BeginUpdate udn EndUpdate
          // daher ForceQueue;
          TThreading.ForceQueue(nil,
            Procedure //ForceQueue
            begin
              If aResult.Success then
              Begin
                MyGUIListview.BeginUpdate;
                MyGUIListview.clear;
                For Var i:integer := 0 to length(aResult.data)-1 do
                  AddTMyListview(aResult.data[i]);
                MyGUIListview.Enabled := true;
                MyGUIListview.EndUpdate;
                MYGUiAnyIndicator.visible := false;
              end //If aResult.Success then
              else
              Begin
                Log(' LoadDataForaShitLoadOfTime:'+aResul.error);
                MyGUIListview.Enabled := true;
                MYGUiAnyIndicator.visible := false;
                ShowMessage(aResul.error);
              end //else If aResult.Success then
            end // procedure //ForceQueue
          )//TThreading.ForceQueue(nil,
      end // procedure// ThreadProcedure
  ).Start; // TThread.CreateAnonymousThread(
end;//myform.OnClick(Sender:tObject);
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (Gestern um 12:52 Uhr)
  Mit Zitat antworten Zitat