AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mutithreading: Konsolenausgabe hakt

Ein Thema von iphi · begonnen am 5. Apr 2017 · letzter Beitrag vom 5. Apr 2017
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#11

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 12:40
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).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 12:51
(was natürlich manche Leute nicht davon abhält es trotzdem zu machen).
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#13

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 12:56
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.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 12:57
Was ist denn da jetzt der Unterschied in den Projektoptionen das zu setzen (habe ich noch nie gemacht)

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

Ich mache das gerne
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#15

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 13:01
@ haentschman:

 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.

Geändert von iphi ( 5. Apr 2017 um 13:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 13:15
(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)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#17

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 13:19
Soviel zum Testen...
Korrekt:
TWorkEvent = procedure(Sender: TObject; WorkStep: Integer) of object;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 13:20
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.

Nein, ist sie nicht. Die Konsole habe ich nur zm Debuggen offen.
Und wo kommt die her?
Das fehlt natürlich in deinem Beispielcode.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 13:36
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...
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#20

AW: Mutithreading: Konsolenausgabe hakt

  Alt 5. Apr 2017, 13:38
Zitat:
Und wo kommt die her?
Die klatscht der Linker dazu.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr.
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