moin
ich wollte mal fragen woran folgendes Problem liegen könnte bzw wie man es beheben könnte:
Ich habe ein Doc/View Projekt zur Steuerung industrieller Drucker der Firma Wolke / APS / REA geschrieben ... In diesem Projekt werden erstellten Labels Track & Trace Daten zugewiesen und sobald der Drucker meldet das er gedruckt hat werden neue Daten aus der Datenbank abgeholt und an den Drucker gesendet ... soweit funktioniert auch alles
ich habe ein paar threads die die Drucker steuern / nen Command Thread der auf der Datenbank horcht und halt eine Oberfläche die die gesandeten Daten anzeigt...
Wie gesagt funktioniert alles...
mein Problem:
wenn der Thread für die Druckersteuerung noch läuft und ich über die Oberfläche das Programm beende verabschiedet sich die Oberfläche (sie hängt sich auf)
mein beenden läuft wie folgt:
-> ich beende die laufenden Threads
-> warte auf das Flag das mir sagt = Druckthread beendet
(Dauert zwischen 3 und 25 sec je nach Drucker)
-> beende Datenbankverbindung
-> lösche meine Arrays
-> und beende das Projekt
Dies alles passiert in der OnAppExit()
wenn ich diese Reihnfolge einhalte hängt sich die Oberfläche auf
das seltsame ist aber : wenn ich beim warten auf das Flag eine AfxMessageBox ausgeben
dann hängt sich die Oberfläche nicht auf und ich kann ganz normal mein Projekt beenden
^^ also wenn ich die AfxMessageBox weg lasse funktioniert das beenden nicht richtig...
wieso ist das so ? was kann man dagegen machen ?
hat da jemand eine idee?
mfg LT
ich wollte mal fragen woran folgendes Problem liegen könnte bzw wie man es beheben könnte:
Ich habe ein Doc/View Projekt zur Steuerung industrieller Drucker der Firma Wolke / APS / REA geschrieben ... In diesem Projekt werden erstellten Labels Track & Trace Daten zugewiesen und sobald der Drucker meldet das er gedruckt hat werden neue Daten aus der Datenbank abgeholt und an den Drucker gesendet ... soweit funktioniert auch alles
ich habe ein paar threads die die Drucker steuern / nen Command Thread der auf der Datenbank horcht und halt eine Oberfläche die die gesandeten Daten anzeigt...
Wie gesagt funktioniert alles...
mein Problem:
wenn der Thread für die Druckersteuerung noch läuft und ich über die Oberfläche das Programm beende verabschiedet sich die Oberfläche (sie hängt sich auf)
mein beenden läuft wie folgt:
-> ich beende die laufenden Threads
-> warte auf das Flag das mir sagt = Druckthread beendet
(Dauert zwischen 3 und 25 sec je nach Drucker)
-> beende Datenbankverbindung
-> lösche meine Arrays
-> und beende das Projekt
Dies alles passiert in der OnAppExit()
wenn ich diese Reihnfolge einhalte hängt sich die Oberfläche auf
das seltsame ist aber : wenn ich beim warten auf das Flag eine AfxMessageBox ausgeben
dann hängt sich die Oberfläche nicht auf und ich kann ganz normal mein Projekt beenden
Code:
void CMainFrame::OnAppExit(){
// TODO: Code für Befehlsbehandlungsroutine hier einfügen
if(db_con->DBConOK){
db_con->DBUpdateAbmeldung();
}
druckerReady = TRUE;
druckJob=FALSE;
commandServer=FALSE;
startet=FALSE;
int i=0;
do{
Sleep(1000);
AfxMessageBox("Ende");
if(i>=2){
break;
}
i++;
}while(ending!=TRUE);
delete [] db_con->obj;
if(db_con->DBConOK){
db_con->DBCloseNow();
}
delete db_con;
if(writeDefaultFile()){
delete label1;
delete label2;
delete label3;
delete label4;
delete label5;
delete label6;
delete label7;
delete errorFeld;
delete ipfeld;
delete dj;
delete dbv;
delete config;
delete txt;
}
SendMessage(WM_CLOSE);
}
^^ also wenn ich die AfxMessageBox weg lasse funktioniert das beenden nicht richtig...
wieso ist das so ? was kann man dagegen machen ?
hat da jemand eine idee?
mfg LT