AGB  ·  Datenschutz  ·  Impressum  







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

Thread Problem

Ein Thema von DerAndereMicha · begonnen am 25. Apr 2005 · letzter Beitrag vom 27. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#1

Thread Problem

  Alt 25. Apr 2005, 15:32
Ich habe folgendes Problem. Ich führe innerhalb eines separaten Threads SQL-Befehle aus. Um evt. Parameter eingeben zu können, erzeuge ich eine Form zur Eingabe.

Mein Problem ist nun, daß dieses Prinzip auf allen PCs unserer Firma funktioniert, aber auf einem Server eines Kunden von uns, welcher eine Dual-Prozessor Maschine ist, nicht. Dort werden unter Umständen, die nicht nachvollziehbar sind, entweder alle Controls der Eingabeform gezeichnet oder die Form bleibt komplett leer.

Ich verwende zur Erzeugung des Threads nicht das TThread-Objekt von Delphi, sondern die Funktion BeginThread, damit steht mir die Synchronize-Methode von der ich im Zusammenhang mit solchen Fehlern schon in diversen Beiträgen gelesen habe, auch nicht zur Verfügung.

Ich hoffe jemand kann mir dieses Verhalten erklären und hat evt. auch eine Lösung parat.
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#2

Re: Thread Problem

  Alt 25. Apr 2005, 15:34
Wie synchronisierst du denn deine Threads aktuell? Critical Sections, Semaphoren, Mutanten?
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Thread Problem

  Alt 25. Apr 2005, 15:41
Gar nicht, glaube ich jedenfalls. Der SQL-Befehl wird im Thread ausgeführt und wenn er beendet ist (ich frage
im Haupt-Thread den Status ab) kann ich erst wieder auf die Controls in der Hauptform zugreifen.
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#4

Re: Thread Problem

  Alt 25. Apr 2005, 16:03
Nachdem dein Thread alle Abfragen gemacht hat, schickst du dir per PostMessage eine Nachricht zum Hauptform. In der Nachrichtenbehandlungsroutine schaltest du dann deine Komponenten wieder frei.

Evtl. musst du noch die Variable (Is?)MultiThreaded auf true schalten, da du an der VCL vorbeiprogrammierst.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Thread Problem

  Alt 26. Apr 2005, 07:23
Das Problem tritt schon vor der Abfrage auf. Das Fenster in die ich
die Parameter eingeben möchte, wird vom abgespaltenen Thread geöffnet
bevor ich die Abfrage ausgeführt wird und anscheinend nicht immer
richtig gezeichnet. Meine Frage war, warum das Fenster meistens aber
nicht immer, völlig ohne Controls erscheint.
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#6

Re: Thread Problem

  Alt 26. Apr 2005, 08:51
Hallo,
Die VCL ist nicht threadsicher. Wenn du aus einem anderen Thread außer dem Hauptthread auf VCL-Komponenten zugreifst kann durchaus alles funktionieren, muss aber nicht. Es ist mehr oder weniger ein Glücksspiel. Das dein Problem gerade auf einer Dual-Prozessor-Maschine auftritt ist eigentlich nachvollziehbar.

In deinem Thread solltest du nicht aufs Formular zugreifen, sondern am Schluss oder ggf. auch zwischendurch mal das Formular im Kontext des Hauptthreads aktualisieren. Den Weg hat dir Vjay schon beschrieben.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Thread Problem

  Alt 26. Apr 2005, 10:43
Das mit dem Neuzeichnen aus dem Kontext des Hauptthreads heraus schien mir ein guter und einfacher Ansatzpunkt zu sein. Ich habe es allerdings erstmal zum Test ohne Messages gemacht sondern über nen Timer der aller Sekunden schaut ob die Form assigned ist und die Form dann mittels
Repaint neuzeichnen lassen. Leider hat das nix geholfen...
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Thread Problem

  Alt 26. Apr 2005, 10:44
Guck dir mal besser mein Tutorial zu Threads an: http://tutorials.luckie-online.de
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Thread Problem

  Alt 26. Apr 2005, 10:48
@Lucki: Du wirsts mir sicherlich nicht glauben, aber das liegt neben mir. Ich hab es mir schon 3mal
komplett durchgelesen, finde aber keinen Ansatzpunkt
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#10

Re: Thread Problem

  Alt 26. Apr 2005, 10:58
Zitat von DerAndereMicha:
Das mit dem Neuzeichnen aus dem Kontext des Hauptthreads heraus schien mir ein guter und einfacher Ansatzpunkt zu sein.
Das ist nicht der springende Punkt. Du solltest aus deinem Thread heraus möglichst überhaupt nicht auf das Formular oder Komponenten des Formulars zugreifen.

Zurzeit setzt du irgendwelche Properties im Thread und bringst den Haupthread dazu das Form zu zeichnen, oder? Du solltest den Haupthread dazu bringen, die verschiedenen Properties zu setzen.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:35 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