| Autor |
Beitrag |
Fienix
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: 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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 19.03.09 18:29
Rufe nicht ShowModal auf, sondern Show
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TMyModalForm.MyShowModal; begin Application.MainForm.Enabled := False;
Show;
while Visible do Application.ProcessMessages;
Application.MainForm.Enabled := True; end; |
|
|
Fienix 
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: Do 19.03.09 18:34
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
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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
      
Beiträge: 1338
Erhaltene Danke: 120
Win 10
RIO, CE, Lazarus
|
Verfasst: Do 19.03.09 20:40
Fienix hat folgendes geschrieben : | | 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 
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: 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
|
Verfasst: Fr 20.03.09 10:31
Fienix hat folgendes geschrieben : | | 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 
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: 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
|
Verfasst: Fr 20.03.09 12:35
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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)).
|
|