AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Nach MessageDlg Meldung "Programm funktioniert nicht mehr"
Thema durchsuchen
Ansicht
Themen-Optionen

Nach MessageDlg Meldung "Programm funktioniert nicht mehr"

Ein Thema von s.h.a.r.k · begonnen am 28. Apr 2010 · letzter Beitrag vom 10. Jun 2010
 
Benutzerbild von s.h.a.r.k
s.h.a.r.k

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

Nach MessageDlg Meldung "Programm funktioniert nicht me

  Alt 28. Apr 2010, 10:20
Hallo zusammen,

ich habe gerade ein sehr seltsames Problem und weiß nicht genau wieso das überhaupt der Fall ist Ich habe einen Thread, der den kompletten Startup erledigt, sodass ein SplashScreen immer zugreifbar bleibt. Aus dem Thread mache ich einmal ein SendMessage an eine Instanz einer Klasse, in im MainThread erzeugt wurde und ein Handle bereit stellt. So sieht der Aufruf auf, d.h. dass der "Workerthread" ja wartet, bis eine Antwort kommt.

Delphi-Quellcode:
if (SendMessage(FApplicationController.Handle, WM_STARTUP_MESSAGE, Integer(smDatabaseSetup), Integer(True)) <> 0) then
  raise EGeneralException.Create('Datenkbank-Setup wurde abgebrochen.', Self)
In der gerufenen Instanz erzeuge ich dann eine GUI, lasse darin einige Dinge erledigen und will danach ein MessageDlg anzeigen lassen, dass alles geklappt hat. Dabei nutze ich keinerlei Threads. Hier die Kurzfassung des Codes:

Delphi-Quellcode:
DBSetupController.DeleteAll();
DBSetupController.CreateAll();
DBSetupController.Import();

// Meldung, dass alles erfolgreich abgelaufen ist
MessageDlg('Datenbank-Setup wurde erfolgreich ausgeführt.', mtInformation, [mbOk], 0);
Es läuft alles perfekt, bis hin zum MessageDlg. Dort hängt sich scheinbar das Programm auf und Windows meldet freudig Programm X funktioniert nicht mehr (Hier noch ein Beispielbild, wie das ganze aussieht). Lasse ich den MessageDlg heraus, so funktioniert alles

Habe ich irgendwas falsch gemacht? Wird die GUI evtl. im Kontaxt des Workerthreads aufgerufen? (was ich aber nicht glaube) Oder woran kann es liegen?

// Edit

Gibt es evtl. irgendwelche Timeouts die es zu beachten gilt?

// Edit 2

Selbst wenn ich den Call mit Synchronize aufrufe klappt es nicht und das Programm schmiert ab:

Delphi-Quellcode:
procedure CallDBSetup();
begin
  if (SendMessage(FApplicationController.Handle, WM_STARTUP_MESSAGE, Integer(smDatabaseSetup), Integer(True)) <> 0) then
    raise EGeneralException.Create('Datenkbank-Setup wurde abgebrochen.', Self)
end;

{ ... }

Synchronize(CallDBSetup);
// Edit 3

Das Ganze passiert aber auch nur, wenn ich die Anwendung aus der IDE heraus starte. "Standalone" klappt alles wunderbar
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
 


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