Einzelnen Beitrag anzeigen

QuickAndDirty

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

AW: Rendern der Szene für TContextIOS kann nicht begonnen werden

  Alt 17. Apr 2019, 14:12
Einer meiner User hat den selben Fehler. Aber von anderen habe ich bisher nichts gehört. Leider ist der Google+plus link von OP tod.
Was stand da ist die Ursache?

Ich habe einen Splashscreen als MainForm und nach dem Laden der App, setzte ich eine art Multiframeform als Mainform und rufe Show für sie auf.
Ist das Falsch?

Delphi-Quellcode:
procedure TSplashView.LoadMainForm;
begin
  ActivityIndicator.Visible := true;
  ActivityIndicator.Enabled := true;
  fLastUpdate := TThread.Gettickcount;

  TLog.d('Loading AppViewModel Start');//Achtung: erzeugt Application.Processmessages
  anonthread.TAnonymousThread<Boolean>.create(
    Function:Boolean
    Begin
      Result := True;
      TAppViewModel.Create(application);
      TLog.d('Loading AppViewModel Finish');
    end
    ,
    Procedure(res:Boolean)
    begin
      Try
        TLog.d('Loading MasterView Start');
        Application.MainForm := TMasterForm.Create(Application);
        TLog.d('Loading MasterView Finish');//SplashView ist jetzt nicht mehr die mainform aber sichtbar, implizit wird auf der logtext auf Splashview ausgegeben und Application.preocessmessages aufgerufen
        TLog.d('Display MasterView');
        Application.MainForm.Show;
        TLog.d('Display MasterFinish');//Achtung: erzeugt Application.Processmessages
        TLog.getInstance.LogListener := nil;
        ActivityIndicator.Enabled := false;
        ActivityIndicator.Visible := false;
        Close;
      except
        on e: exception do
        Begin
          ShowSyncedMessage('Error after LoadMainForm: ' + e.message);
        end;
      end;
    end
    ,
    Procedure(E:Exception)
    Begin
      TLog.d('Error in LoadMainForm: ' + e.message); //Achtung: erzeugt Application.Processmessages
      InfoLBL.Visible := true;
      ShowSyncedMessage('Error in LoadMainForm: ' + e.message);
    end
  );
end;


procedure TSplashView.OnLogEvent(aText: String);
begin

  if TThread.CurrentThread.ThreadID <> MainThreadID then
  Begin
    TThread.Queue(TThread.CurrentThread, procedure
      Begin
        if (TThread.GetTickCount - fHangtime_Started > HANGDURATION) then
          InfoLBL.Visible := true;
        infoLBL.Text := infoLBL.Text+linefeed+aText;
      end);
  end
  Else
  Begin
    if (TThread.GetTickCount - fHangtime_Started > HANGDURATION) then
      InfoLBL.Visible := true;
    infoLBL.Text := infoLBL.Text+linefeed+aText;
    // WICHTIG ActivityIndicator wird nur animiert wenn Application.ProcessMessages läuft
    // das liegt irgendwie daran dass die Datenbankverbindung im Hauptthread läuft !
    Application.ProcessMessages;
  End
end;
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (17. Apr 2019 um 14:21 Uhr)
  Mit Zitat antworten Zitat