Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mutithreading: Konsolenausgabe hakt (https://www.delphipraxis.net/192279-mutithreading-konsolenausgabe-hakt.html)

Uwe Raabe 5. Apr 2017 11:40

AW: Mutithreading: Konsolenausgabe hakt
 
Zitat:

Zitat von Mavarik (Beitrag 1366509)
Hat ein Consolenprogramm überhaupt einen UI-Thread?

In der Regel nicht. Dafür gibt es eine Abfrage in TApplication.CreateHandle auf IsConsole.

Wenn es lediglich um die Ausgabe geht, würde sich ein separates Form anbieten in dem die Ausgabe erfolgt. Das wäre dann wenigstens konsistent.

Solche Misch-Applikationen haben schon immer für Ärger gesorgt, da sie von Windows überhaupt nicht unterstützt werden (was natürlich manche Leute nicht davon abhält es trotzdem zu machen).

Mavarik 5. Apr 2017 11:51

AW: Mutithreading: Konsolenausgabe hakt
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1366513)
(was natürlich manche Leute nicht davon abhält es trotzdem zu machen).

:thumb:

Blup 5. Apr 2017 11:56

AW: Mutithreading: Konsolenausgabe hakt
 
CheckSynchronize wird vom Applikationsobjekt einer VCL-Anwendung regelmäßig aufgerufen.
Dadurch werden Synchronize-Anforderungen von Threads verarbeitet.
In einer Konsolenanwendung muss man selbst für den regelmäßigen Aufruf dieser Methode sorgen.

Bei dieser Methode der Datenübergabe muss sowohl der Threaad als auch die Mainthread seine Arbeit unterbrechen.
Deshalb ist es besser asynchron mit Threads zu komunizieren, allerdings auch etwas aufwendiger.

Der schöne Günther 5. Apr 2017 11:57

AW: Mutithreading: Konsolenausgabe hakt
 
Was ist denn da jetzt der Unterschied in den Projektoptionen das zu setzen (habe ich noch nie gemacht)

und zum Test einfach mal mit
Delphi-Quellcode:
WinApi.Windows.AllocConsole()
ein Konsolenfenster aufzumachen in welches man dann mit
Delphi-Quellcode:
WriteLn(..)
einfach Dinge reinwirft?

Ich mache das gerne :oops:

iphi 5. Apr 2017 12:01

AW: Mutithreading: Konsolenausgabe hakt
 
@ haentschman:

Delphi-Quellcode:
 FPoll.OnWork := DoOnWork;
Mein D7-Compiler sagt da:
[Error] Unit1.pas(68): Incompatible types: 'regular procedure and method pointer'

@ Mavarik:

Zitat:

OK - Du gibst also nicht in ein Consolenfenster aus sondern es IST ein consolen Application?!?
Nein, ist sie nicht. Die Konsole habe ich nur zm Debuggen offen.

Zitat:

Wofür dann das Form?
Hab im Beispielprogramm alles bis auf die leere Form rausgeschmissen, da für die Erklärung des Problems unwesentlich.

@ Der schöne Günter:

Zitat:

und zum Test einfach mal mit WinApi.Windows.AllocConsole() ein Konsolenfenster aufzumachen
Hmmm, interessant. Wenn ich mit dieser Variante das Konsolenfenster aufmache, ist das Problem weg.

himitsu 5. Apr 2017 12:15

AW: Mutithreading: Konsolenausgabe hakt
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1366513)
(was natürlich manche Leute nicht davon abhält es trotzdem zu machen).

Andersrum geht es problemlos.

Also VCL-Anwendung und da dann selber eine Console anzeigen (MSDN-Library durchsuchenAllocConsole)

haentschman 5. Apr 2017 12:19

AW: Mutithreading: Konsolenausgabe hakt
 
:P Soviel zum Testen...
Korrekt:
Delphi-Quellcode:
TWorkEvent = procedure(Sender: TObject; WorkStep: Integer) of object;

himitsu 5. Apr 2017 12:20

AW: Mutithreading: Konsolenausgabe hakt
 
Zitat:

Zitat von Mavarik (Beitrag 1366509)
Hat ein Consolenprogramm überhaupt einen UI-Thread?

Einen Mainthread hat jede Anwendung, aber in der Console gibt es die Message-Loop (Application.Run) natürlich nicht.

Zitat:

Zitat von iphi (Beitrag 1366520)
Nein, ist sie nicht. Die Konsole habe ich nur zm Debuggen offen.

Und wo kommt die her?
Das fehlt natürlich in deinem Beispielcode.

Mavarik 5. Apr 2017 12:36

AW: Mutithreading: Konsolenausgabe hakt
 
Zitat:

Zitat von himitsu (Beitrag 1366527)
Zitat:

Zitat von Mavarik (Beitrag 1366509)
Hat ein Consolenprogramm überhaupt einen UI-Thread?

Einen Mainthread hat jede Anwendung, aber in der Console gibt es die Message-Loop (Application.Run) natürlich nicht.

Das meinte ich - logischerweise - damit...

iphi 5. Apr 2017 12:38

AW: Mutithreading: Konsolenausgabe hakt
 
Zitat:

Und wo kommt die her?
Die klatscht der Linker dazu.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz