Autor Beitrag
Fienix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
BeitragVerfasst: Do 19.03.09 18:21 
Ich habe einen Thread der im Hintergrund Ausdrucke aufbereitet.
Z.B. ich will 5 Dokumente drucken dann werden 5 Threads gestartet,
soweit funktioniert das alles ohne Probleme.

Es sei ich rufe ShowModal auf, dann bleiben meine Threads stehen.

Weiss jemand wie man das umgehen kann das die Threads trotzdem weiterlaufen?

Danke.

_________________
Wer sichert ist feige!!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 19.03.09 18:29 
Rufe nicht ShowModal auf, sondern Show ;)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TMyModalForm.MyShowModal;
begin
  // Hauptformular deaktivieren (ggf. auch andere hier einfügen)
  Application.MainForm.Enabled := False;

  // Sich selbst anzeigen
  Show;

  // Warten, bis geschlossen (in Application.ProcessMessages) sollten auch 
  // Threads zum Zuge kommen)
  while Visible do Application.ProcessMessages;

  // Fenster wieder aktivieren
  Application.MainForm.Enabled := True;
end;
Fienix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
BeitragVerfasst: Do 19.03.09 18:34 
:o
Das wäre auch eine Möglichkeit.
Wenn keine besseren Vorschläge kommen, werd ich es wohl so machen müssen.

_________________
Wer sichert ist feige!!
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 19.03.09 20:02 
Wo rufst du ShowModal auf? In den Threads bist du eingeschränkt, was du mit der VCL machen darfst.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1338
Erhaltene Danke: 120

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Do 19.03.09 20:40 
user profile iconFienix hat folgendes geschrieben Zum zitierten Posting springen:
Es sei ich rufe ShowModal auf, dann bleiben meine Threads stehen.

Hä? Das verstehe ich nicht. Ein echter Thread lässt sich nicht wirklich durch etwas stoppen, mal abgesehen davon in via Suspend zu unterbrechen.
Es sei denn du versuchst aus dem Thread heraus ein Formular via ShowModal zu öffnen. Da hält er natürlich an.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Fienix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
BeitragVerfasst: Fr 20.03.09 10:24 
In den Threads ruf ich das ShowModal nicht auf sondern im Hauptprozess.

Kann es evtl an dem Synchronize liegen?

_________________
Wer sichert ist feige!!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 20.03.09 10:31 
user profile iconFienix hat folgendes geschrieben Zum zitierten Posting springen:
Kann es evtl an dem Synchronize liegen?

Ohne Code schlecht zu sagen. Jedenfalls wird jede in Synchronize aufgerufene Prozedur im Kontex des Hauptthreads ausgeführt und so lange wartet natürlcih der aufrufende Thread.
Fienix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
BeitragVerfasst: Fr 20.03.09 10:37 
Genau sowas hab ich mir schon gedacht.

Hab lieder noch nicht genau rausgefunden was Synchronize macht.
Aber ohne läuft es nicht.

_________________
Wer sichert ist feige!!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 20.03.09 12:35 
user profile iconFienix hat folgendes geschrieben Zum zitierten Posting springen:
Hab lieder noch nicht genau rausgefunden was Synchronize macht.

Dazu ist die Hilfe da. ;)
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 20.03.09 14:14 
Synchronize blockiert eben gerade den Thread, bis der Aufruf beendet ist. Du kannst entweder mit Queues arbeiten, oder die MessageBox Funktion der WinAPI im Thread aufrufen (ohne Synchronize). Den Code von Yogu würde ich nicht empfehlen (es sei denn, du hast vor, ein Spiegelei auf dem Prozessor zu braten (nicht böse gemeint)).