AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?
Thema durchsuchen
Ansicht
Themen-Optionen

Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?

Ein Thema von s.h.a.r.k · begonnen am 24. Jun 2010 · letzter Beitrag vom 24. Jun 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?

  Alt 24. Jun 2010, 10:37
Ich bin mit Threads wohl immer noch nicht so sicher, wie ich es gerne hätte und habe im Moment eine theoretische Frage. Und zwar habe ich einen StartupThread, der eigentlich alle Sachen erledigt, die beim Start des Programms anfallen. Innerhalb dieses Threads wird ein weiterer erzeugt. Stellt das ein Problem dar, oder ist das belanglos? Ich hatte neulich jedenfalls ein Problem mit einem Handle, welches ich innerhalb eines Thread alloziert habe. Und lustigerweise hängt sich die IDE genau an der Stelle auf, an der ich diesen Thread starten will. Lasse ich das Programm jedoch ohne Debugger laufen, so klappt es einwandfrei.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?

  Alt 24. Jun 2010, 11:10
Wo ein Thread erzeugt wird, ist egal.
PS: Der Hauptthread ist auch nur ein Thread.

Es gibt aber bestimmte dinge, welche an einen Thread gebunden sind.

z.B. werden Windows/Fenster (VCL-Komponenten/TTimer und die entsprechenden Komponenten von Windows) nur in dem Thread behandelt, also in dessen Nachrichtenbehandlung (WindowsMessage-Schleife) bearbeitet, in welchem sie erstellt wurden.

(auch darum sollte man nicht auf die VCL, innerhalb eines "anderen" Threads, zugreifen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?

  Alt 24. Jun 2010, 11:12
Ich hatte neulich jedenfalls ein Problem mit einem Handle, welches ich innerhalb eines Thread alloziert habe.
Falls es ein GUI-Handle ist: Diese haben unter Windows eine Thread-Affinität. Diese dürfen nur im erzeugenden Thread verwendet werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?

  Alt 24. Jun 2010, 11:24
Hm, okay, dann sollte das Problem nicht von dem Thread-In-Thread-Ding her kommen. Aber dann versteh ich immer noch nicht ganz, warum dann mein Programm abschmiert, wenn ich es aus Delphi heraus starte, sonst aber nicht... Teilweise gibts da schon Eigenheiten...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
24. Jun 2010, 11:30
Dieses Thema wurde am "24. Jun 2010, 12:30 Uhr" von "SirThornberry" aus dem Forum "GUI-Design mit VCL / Qt / Common Controls" in das Forum "Algorithmen, Datenstrukturen und Klassendesign" verschoben.
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?

  Alt 24. Jun 2010, 13:17
Und zwar habe ich einen StartupThread, der eigentlich alle Sachen erledigt, die beim Start des Programms anfallen. Innerhalb dieses Threads wird ein weiterer erzeugt.
Nur nebenbei:
Wozu sollte das gut sein? Weshalb wird dieser 2. Thread nicht im Hauptthread erzeugt?
Beziehungsweise kann es sein dass Abhängigkeiten zwischen diesen beiden erzeugten Threads bestehen
und der erste vor dem zweiten terminiert wird?

Und lustigerweise hängt sich die IDE genau an der Stelle auf, an der ich diesen Thread starten will. Lasse ich das Programm jedoch ohne Debugger laufen, so klappt es einwandfrei.
Wenn Exceptions ausserhalb des Hauptthreads nicht explizit behandelt werden kann dies durchaus sein.
Die Exception wird nicht an den Hauptthread weitergeleitet und somit nicht sichtbar.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Thread in Thread erzeugen; ergibt das ein Problem bzgl. Handle?

  Alt 24. Jun 2010, 13:24
Hallo shark,

dies stellt defintiv kein Problem dar. Dem Thread ist es auch völlig egal von wem er gestartet wird. Er verhält sich deswegen nicht anders.

Bzgl des Problems mit Delphi:
1. Hatten wir ja letztens schon, dass allocatehwnd nicht threadsicher ist. Vielleicht liegt es daran.
2. Was aber auch nicht "threadsicher" ist, ist der Debugger von Delphi. Soll heißen: Hier hat der Debugger Fehler und es muss nicht zwingend an deinem Programm liegen. Allerdings ist es generell schwer Threads zu debuggen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:16 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