AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Seltsamer Fehler mit PageControl und Thread
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsamer Fehler mit PageControl und Thread

Ein Thema von xtZ · begonnen am 12. Okt 2007 · letzter Beitrag vom 12. Okt 2007
Antwort Antwort
xtZ

Registriert seit: 22. Jul 2007
21 Beiträge
 
#1

Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 20:35
Hallo,

Wie kann es sein, dass immer, wenn ich mit einem Thread auf ein Control in einem inaktiven TabSheet, dass noch nicht in den Vordergrund gerufen wurde, zugreife, das Control verschwindet und beim Beenden des Programms einige Fehlermeldungen bekomme, jedoch wenn das Control bzw. das TabSheet schon einmal sichtbar, also im Vordergrund war, alles funktioniert?

Habe zwecks besserer Verständnis nochmal ein Beispiel im Anhang.
Dazu einfach mal auf den Button klicken, ohne das erste TabSheet in den Vordergrund gebracht zu haben.

Hoffe irgendjemand hat das verstanden und kann mir erklären, wieso das so ist.

Danke
Angehängte Dateien
Dateityp: zip test_367.zip (5,3 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 21:05
Es ist einfach nicht erlaubt unsynchronisiert von einem Thread auf GUI-Controls zuzugreifen. Das kracht einfach unspezifiziert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
xtZ

Registriert seit: 22. Jul 2007
21 Beiträge
 
#3

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 21:08
Zitat von Bernhard Geyer:
Es ist einfach nicht erlaubt unsynchronisiert von einem Thread auf GUI-Controls zuzugreifen. Das kracht einfach unspezifiziert.
Ja, aber wenn man das Control einmal sichtbar gemacht hat, funktioniert es ja.
Wie kann man denn synchronisiert mit BeginThread arbeiten?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 21:16
Zitat von xtZ:
Ja, aber wenn man das Control einmal sichtbar gemacht hat, funktioniert es ja.
Es funktioniert zufälliger weise.

Zitat von xtZ:
Wie kann man denn synchronisiert mit BeginThread arbeiten?
Ich wüsste es wenn du die TThread-Klasse verwenden würdest. Dort gibt es die Methode Synchronize. Schau doch mal im VCL-Code was dort gemacht wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
xtZ

Registriert seit: 22. Jul 2007
21 Beiträge
 
#5

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 21:25
Zitat von Bernhard Geyer:
Ich wüsste es wenn du die TThread-Klasse verwenden würdest. Dort gibt es die Methode Synchronize. Schau doch mal im VCL-Code was dort gemacht wird.
Ja, das hätte ich auch gewusst, aber ich dachte, dass es sowas ähnliches auch für BeginThread gibt, weil ich mir für sowas nicht extra ein TThread anlegen möchte. Gibt es sonst nicht irgendwie die Möglichkeit ein Event an die Form oder so zu senden, sodass nicht der Thread, sondern die Form auf das Control zugreift?
In der Code-Library habe ich leider nichts passendes gefunden.

Danke!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 21:39
Deiner Phantasie sind keine Grenzen gesetzt! Eine globale Boolean-Variable sollte es zum Beispiel tun, wenn du sie im Hauptthread mit einem Timer abfragst. Sei aber allgemein vorsichtig, wenn du in mehreren Threads auf Variablen zugreifst. Das geht in diesem speziellen Fall aber noch.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 21:50
Hi,

also ich empfehle dir TThread und Syncronize, so wie es Bernhard schon gesagt hat.

Gruß oki
42
  Mit Zitat antworten Zitat
xtZ

Registriert seit: 22. Jul 2007
21 Beiträge
 
#8

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 22:07
OK, dann werde ich es so machen. Thx
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 22:21
vllt mit CriticalSections?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Seltsamer Fehler mit PageControl und Thread

  Alt 12. Okt 2007, 22:21
Synchronize funktioniert über WIndows Messages. Es wird an den Hauptthread eine Nachricht geschickt, mit der Bitte, die entsprechenden Prozedur in seinem Kontext auszuführen. Das kann man natürlich nachbilden...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  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 10:24 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