AGB  ·  Datenschutz  ·  Impressum  







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

Thread startet execute nicht

Ein Thema von Murkas · begonnen am 22. Mai 2013 · letzter Beitrag vom 26. Mai 2013
Antwort Antwort
Seite 3 von 3     123   
Murkas

Registriert seit: 22. Mai 2013
11 Beiträge
 
#21

AW: Thread startet execute nicht

  Alt 25. Mai 2013, 23:56
Ich habe versucht über showmessage und über ein memo auf Form1 eine Nachricht anzuzeigen. Beides kommt nicht zu stande.

Mir ist aber dabei was Interessantes aufgefallen. Wenn ich den Code ändere, dann wird die execute in einigen, nicht einfach reproduzierbaren Fällen ausgeführt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

AW: Thread startet execute nicht

  Alt 26. Mai 2013, 00:14
Ein Zugriff aus dem Thread Kontext auf die VCL oder auch ShowMessage ist ein absolutes NoGo.

Sowas nur synchronisiert machen.

Zum Thema Threads solltest du dir ein paar Tutorials ansehen, denn das ist nicht trivial.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Murkas

Registriert seit: 22. Mai 2013
11 Beiträge
 
#23

AW: Thread startet execute nicht

  Alt 26. Mai 2013, 00:18
Ich habe mir schon einige durchgelesen, jedoch wüsste ich nicht, wie mir das Synchroniesieren hier helfen sollte. Und soo schwer sind Threads mit TThread ja nun auch nicht.. naja.. also wenn es denn dann funktioniert
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#24

AW: Thread startet execute nicht

  Alt 26. Mai 2013, 04:41
Ein Zugriff aus dem Thread Kontext auf die VCL oder auch ShowMessage ist ein absolutes NoGo.
Damit hat er vollkommen recht. Das ist das erste was du ändern musst. Wenn nicht anders, mach eine Konsole mit rein, und arbeite mit WriteLn um auf die schnelle eine Ausgabe zu machen. Dann brauchst du, meines Wissens, erst mal nicht syncen.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Thread startet execute nicht

  Alt 26. Mai 2013, 09:04
Ich habe versucht über showmessage und über ein memo auf Form1 eine Nachricht anzuzeigen. Beides kommt nicht zu stande.
Daraus kannst du aber nur schließen, daß die erwarteten Auswirkungen dieser beiden Aktionen nicht eingetreten sind. Das sagt überhaupt nichts darüber aus, ob das Execute ausgeführt wurde oder nicht. Der Titel führt als jeden, der dir helfen will, gewaltig in die Irre. Realistischer wäre: ShowMessage und Ändern von Memo-Inhalten funktionieren nicht im Thread.

Es ist hier schon mehrfach deutlich gemacht worden, daß Zugriffe auf die VCL (dazu gehört Showmessage und das Manipulieren eines Memos) aus einem Thread heraus nur eingeschränkt, wenn überhaupt, funktionieren. Deine Beobachtungen bestätigen das doch sehr anschaulich.

Wenn dir also schon mehrere Leute sagen, was du falsch machst, dann halte dich doch bitte zunächst mal an diese gut gemeinten Ratschläge!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Murkas

Registriert seit: 22. Mai 2013
11 Beiträge
 
#26

AW: Thread startet execute nicht

  Alt 26. Mai 2013, 14:05
Ok, ich denke ich habe nun verstanden, was mein Fehler ist. Ich habe einfach mal über die execute Prozedur eine synchronisierte Prozedur gestartet, die mir eine Nachricht anzeigt. Das heist, dass die execute doch gestartet wird. Ich hatte einfach die Auswirkung unterschätzt, die entsteht, wenn man etwas unsynchronisiert anzeigen möchte. Demzufolge wäre dann eine andere Threadüberschrift wirklich hilfreich gewesen, ich bin aber davon ausgegangen, dass die execute einfach nicht gestartet wird. Im Ergebnis muss ich also meinen Fehler im Quellcode des Threads suchen.

Eine andere Frage, die bei mir da grade so aufkommt, ist noch: Warum akzeptiert synchronize() keine Prozeduren mit Parametern?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#27

AW: Thread startet execute nicht

  Alt 26. Mai 2013, 14:09
Weil TThreadMethod eine parameterlose Methode ist. Du kannst aber doch eine solche synchronisieren, innerhalb derer Du dann einfach eine Methode mit Parametern aufrufst.

[edit] Vielleicht war das jetzt etwas schwer verständlich, daher ein Beispiel:
Delphi-Quellcode:
...
Synchronize(Parameterlos);
...

procedure TDeinThread.Parameterlos;
begin
  MachIrgendwas(FPrivatesFeld1, FPrivatesFeld2);
end;

procedure TDeinThread.MachIrgendwas(Param1, Param2: integer);
begin
  //Code
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (26. Mai 2013 um 14:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   

 

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 19:48 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