Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Error Code 1400. Ungültiges Fensterhandle (https://www.delphipraxis.net/14836-error-code-1400-ungueltiges-fensterhandle.html)

Meflin 16. Jan 2004 16:40


Error Code 1400. Ungültiges Fensterhandle
 
hab ein klitzekleines problem: ich hab ne anwendung, die threads erzeugt. die beenden sich scheinbar auch alle wieder. wenn ich die anwendung allerdings beende, bekomme ich o.g. exception! wenn ich die threads nicht starte, geht alles normal! das dumme ist, dass ich den quelltext zwar posten könnte, dieser aber schon 450 zeilen lang ist! das möcht ich keinem antun! wo sind also die prinzipiellen auslöser dieser exception zu suchen?

*MFG*

Luckie 16. Jan 2004 16:43

Re: Error Code 1400. Ungültiges Fensterhandle
 
Beende erst alle Threads bevor du dein Fenster schließst. Es kann sein, dass ein Thread noch auf Ressourcen deines fensters zugreift nachdem es schon zerstört wurde, der Prozess aber noch läuft.

SirThornberry 16. Jan 2004 16:43

Re: Error Code 1400. Ungültiges Fensterhandle
 
greifst du in den threads irgendwie auf die vcl-komponenten des forms zu ohne syncronize???

Meflin 16. Jan 2004 16:48

Re: Error Code 1400. Ungültiges Fensterhandle
 
die threads scheinen aber alle beendet, bevor ich das programm beende!
synchronize verwende ich bis jetzt nicht!

Luckie 16. Jan 2004 16:52

Re: Error Code 1400. Ungültiges Fensterhandle
 
Zitat:

Zitat von Meflin
synchronize verwende ich bis jetzt nicht!

Und wie greifts ud von den Threads auf Komponenten deiner Form zu, um deren Ergebnsi darzustellen? Oder ist das nicht nötig?

Meflin 16. Jan 2004 16:56

Re: Error Code 1400. Ungültiges Fensterhandle
 
zum einen regel ich das über globale variablen, die ich aus dem formular heraus anzeige.
aller dings verwend ich auch
with form1 do begin...

SirThornberry 16. Jan 2004 16:57

Re: Error Code 1400. Ungültiges Fensterhandle
 
Oder benutzt du "application.showmainform := false"? wenn du das verwendest und auf dem formular rumänderst ohne dass, das mainform vorher sichtbar war kommt auch so ein fehler mit fensterhandle. Aber ich tippe darauf das es daran liegt das du nicht syncronize benutzt. Wenn du duch einen thread am haupformular was änderst woher soll das formular dann das wissen. Und wenn du weißt dasses handle gleichzeitig ne adresse im Speicher ist, wird klar das es durchaus sein kann das du durch änderungen am mainform was im speicher änderst und dann stimmt halt das handle von irgendwas nimmer

Luckie 16. Jan 2004 16:59

Re: Error Code 1400. Ungültiges Fensterhandle
 
Zitat:

Zitat von Meflin
zum einen regel ich das über globale variablen, die ich aus dem formular heraus anzeige.

Autsch.
Zitat:

aller dings verwend ich auch
with form1 do begin...
Noch mal Autsch.

Kuck dir unbedingt mal mein Threading Tutorial an. Gerade bei Threads sollte man wissen, was man tut, sonst endet das so wie bei dir.

Meflin 16. Jan 2004 17:01

Re: Error Code 1400. Ungültiges Fensterhandle
 
learning by doing... *g*!
der zugriff auf die globalen variablen erfolgt atomar!

Luckie 16. Jan 2004 17:02

Re: Error Code 1400. Ungültiges Fensterhandle
 
Mit den InterLockedxxx-Funktionen?

Meflin 16. Jan 2004 17:04

Re: Error Code 1400. Ungültiges Fensterhandle
 
ja, die erzeugen den fehler aber nicht, das hab ich schon ausprobiert!

Luckie 16. Jan 2004 17:05

Re: Error Code 1400. Ungültiges Fensterhandle
 
Ich würde es trotzdem wie in meinem Tutorial mit Synchronize machen.

Meflin 16. Jan 2004 17:06

Re: Error Code 1400. Ungültiges Fensterhandle
 
ich werds mal versuchen!

Meflin 16. Jan 2004 17:47

Re: Error Code 1400. Ungültiges Fensterhandle
 
ich verwende nicht das VCL Thread Objekt!

Luckie 16. Jan 2004 17:50

Re: Error Code 1400. Ungültiges Fensterhandle
 
Kann ich doch nicht wissen. Dann sichere die Zugriffe mit Critical Sections ab.

Meflin 16. Jan 2004 17:55

Re: Error Code 1400. Ungültiges Fensterhandle
 
lassen sich die auch zur laufzeit erstellen und wenn ja dann wie?

Luckie 16. Jan 2004 18:02

Re: Error Code 1400. Ungültiges Fensterhandle
 
Ich verweise dich hiermit noch mal auf mein Tutorial.

Nachtrag: Du verwendest hoffentlich nicht CreateThread?

Meflin 16. Jan 2004 18:05

Re: Error Code 1400. Ungültiges Fensterhandle
 
nein ich verwende nicht createthread.
also kann man sie nicht zur laufzeit erstellen...
damit scheiden sie aus!

Luckie 16. Jan 2004 18:05

Re: Error Code 1400. Ungültiges Fensterhandle
 
Argh, lies doch endlichmal mien Tutorial. Sicher kann man Critical Sections zur Laufzeit erstellen, anders geht es gar nicht.

Meflin 16. Jan 2004 18:09

Re: Error Code 1400. Ungültiges Fensterhandle
 
zur laufzeit erstellen war vielleicht der falsche ausdruck!
ich meinte wohl eher dynamisch! das, problem ist, dass ich
n threads habe und auch n critical sections brauche! wie
soll ich einer critical section denn bitte einen namen zuweisen????

Luckie 16. Jan 2004 18:26

Re: Error Code 1400. Ungültiges Fensterhandle
 
Du brauchst nur so viele CS, wie du gemeinsame Ressourcen hast. Sonst macht es ja keinen Sinn.

Meflin 17. Jan 2004 14:01

Re: Error Code 1400. Ungültiges Fensterhandle
 
aber da liegt ein problem: ich hab n threads, für jeden thread
eine listbox, also n listboxes. das sind ohne probleme mal
250 - 500 stück! ein thread füllt die listboxen. also nach meinem
denken bräucht ich dann n cses oder nicht?

Luckie 17. Jan 2004 14:04

Re: Error Code 1400. Ungültiges Fensterhandle
 
Bitte wie? 250 - 500 Listboxen? :shock: Wer soll das bedienen? Überdenk mal dein Design.

Pseudemys Nelsoni 17. Jan 2004 14:09

Re: Error Code 1400. Ungültiges Fensterhandle
 
vielleicht hat er ja 500 chaträume mit den usern der chans drin *g*

Meflin 17. Jan 2004 14:11

Re: Error Code 1400. Ungültiges Fensterhandle
 
die soll niemand bedienen - das machen ja eben die threads
und zwar automatisch

Luckie 17. Jan 2004 14:13

Re: Error Code 1400. Ungültiges Fensterhandle
 
Dann nimm Stringlisten, wenn es eh keiner bedienen muss. Und die Stringlisten übergibst du als Parameter an die Threads oder so.

Pseudemys Nelsoni 17. Jan 2004 14:14

Re: Error Code 1400. Ungültiges Fensterhandle
 
und in allen 500 willst du was anzeigen? wo plazierst du die denn

Meflin 17. Jan 2004 14:15

Re: Error Code 1400. Ungültiges Fensterhandle
 
@luckie: das ändert aber doch das prinzipielle problem nicht

@Pseudemys Nelsoni: die sind nicht sichtbar

Pseudemys Nelsoni 17. Jan 2004 14:15

Re: Error Code 1400. Ungültiges Fensterhandle
 
ja dann nehm doch wie luckie sagte TStringlist's

Luckie 17. Jan 2004 14:17

Re: Error Code 1400. Ungültiges Fensterhandle
 
Zitat:

Zitat von Meflin
@luckie: das ändert aber doch das prinzipielle problem nicht

Das würde ich jetzt so nicht einfach behaupten.

Zitat:

@Pseudemys Nelsoni: die sind nicht sichtbar
Autsch. Das ist ja noch schlimmer.

Meflin 17. Jan 2004 14:19

Re: Error Code 1400. Ungültiges Fensterhandle
 
aber den zugriff auf eine stringliste muss ich doch auch schützen?
:wiejetzt:

Luckie 17. Jan 2004 14:21

Re: Error Code 1400. Ungültiges Fensterhandle
 
Nein. wer soll denn noch drauf zugreifen außer der Thread? Auf eien Listbox greift auch Wiundows zu beim Zeichnen oder wann auch immer.

Meflin 17. Jan 2004 14:23

Re: Error Code 1400. Ungültiges Fensterhandle
 
aber es gibt da ja noch den einen thread, der ab und zu auf alle
listboxes zugreift, weil er die ja mit daten füllt!

eigenltich alles egal, das problem hab ich zwar, aber noch nicht im code,
sondern nur im hirn! das alles löst den fehler nicht aus!

Pseudemys Nelsoni 17. Jan 2004 14:32

Re: Error Code 1400. Ungültiges Fensterhandle
 
hm ich versteh das nicht, mit ner stringlist kannst du doch genau das selbe wie mit deiner listbox machen, dürfte wohl sogar schneller sein -_-. aber wenn das dein problem nicht wahr

Meflin 17. Jan 2004 14:37

Re: Error Code 1400. Ungültiges Fensterhandle
 
das problem hab ich doch am anfang schon beschrieben!

Luckie 17. Jan 2004 14:42

Re: Error Code 1400. Ungültiges Fensterhandle
 
Also ich würde noch mal von vorne anfangen und das Konzept noch mal überdenken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.

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