Hallo,
Habe folgendes Problem:
Ich starte mein Programm (Uploader). Der Bildschirm ist wie eingefroren.
Es werden so lange keine (ftp)-Signale (commandFinished, done, etc.) ausgelöst, bis ich die Maus irgendwo in das Fenster bringe. Sobald die Maus auch nur den Fensterrand berührt, werden die Signale ausgelöst und das Programm arbeitet normal weiter.
Was mir noch aufgefallen ist, dass das nicht auf allen Rechner auftritt, sondern eher nur auf den etwas schnelleren. Auf einem relativ alten und langsamen Rechner (Betriebssystem Windows XP) läuft alles normal ab, auf einem schnelleren (Betriebssystem Windows Vista) tritt dieses Verhalten auf.
Woran kann das liegen bzw. wie kann ich Abhilfe schaffen?
mfg
Herbert
[gelöst] QFtp Signale "hängen"
[gelöst] QFtp Signale "hängen"
Zuletzt geändert von hs60 am 15. Februar 2010 12:06, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hallo Christian,
ich sende den Befehl ab:
Danach spricht noch das Signal an:
Als nächstes ftpStatus-Signal sollte noch kommen:
tut es aber nicht. Es steht alles, bis ich mit der Maus über das Fenster komme.
Nachtrag:
Irgendwie muß es aber mit dem Rechner bzw. mit dem Betriebssystem zusammenhängen. Ich habe das Programm jetzt auf 2 anderen Rechnern mit jeweils dem Betriebssystem Windows XP probiert und auf beiden Rechnern läuft das Programm fehlerfrei.
Warum es auf dem Entwicklungsrechner (mit Betriebssystem Vista) nicht so mag, ist mir ein Rätsel. Aber vielleicht hat der eine oder andere ebenfalls ein ähnliches Problem (gehabt).
mfg
Herbert
ich sende den Befehl ab:
Code: Alles auswählen
ftp->connectToHost(url.host(), ui->lePort->text().toInt());
Code: Alles auswählen
if (ftp->state() == QFtp::HostLookup) {
ui->lvLog->addItem(tr("Host-Name %1 wird aufgelöst...").arg(url.host()));
}
Code: Alles auswählen
QFtp::Connecting
Nachtrag:
Irgendwie muß es aber mit dem Rechner bzw. mit dem Betriebssystem zusammenhängen. Ich habe das Programm jetzt auf 2 anderen Rechnern mit jeweils dem Betriebssystem Windows XP probiert und auf beiden Rechnern läuft das Programm fehlerfrei.
Warum es auf dem Entwicklungsrechner (mit Betriebssystem Vista) nicht so mag, ist mir ein Rätsel. Aber vielleicht hat der eine oder andere ebenfalls ein ähnliches Problem (gehabt).
mfg
Herbert
Hallo noch einmal,
habe das Problem gefunden:
Ich hatte einen Button eingebaut, mit dem der Benutzer die Möglichkeit hat, die automatische Programmausführung innerhalb von 5 Sekunden nach Start abzubrechen. Zu diesem Zweck zeigte eine ProgressBar sekündlich den Fortschritt an. Realisiert hatte ich dies mit 2 Timern ( es fiel mir nichts besseres ein ). Der erste Timer hatte ein TimeOut nach 5 Sekunden, der 2. Timer aktualisierte sekündlich den Fortschrittsbalken (Signal/Slot). Und hier lag für mich unergründlich das Problem. Nach Entfernen des 2. Timers läuft jetzt auch auf dem Entwicklungsrechner alles fehlerfrei.
Das Problem, welches ich jetzt noch habe, ist die Anzeige der abgelaufenen Zeit in der ProgressBar (sekündlich). Muss ich mir noch etwas anderes einfallen lassen. Vielleicht ist das ja auch mit nur einem Timer möglich.
mfg
Herbert
habe das Problem gefunden:
Ich hatte einen Button eingebaut, mit dem der Benutzer die Möglichkeit hat, die automatische Programmausführung innerhalb von 5 Sekunden nach Start abzubrechen. Zu diesem Zweck zeigte eine ProgressBar sekündlich den Fortschritt an. Realisiert hatte ich dies mit 2 Timern ( es fiel mir nichts besseres ein ). Der erste Timer hatte ein TimeOut nach 5 Sekunden, der 2. Timer aktualisierte sekündlich den Fortschrittsbalken (Signal/Slot). Und hier lag für mich unergründlich das Problem. Nach Entfernen des 2. Timers läuft jetzt auch auf dem Entwicklungsrechner alles fehlerfrei.
Das Problem, welches ich jetzt noch habe, ist die Anzeige der abgelaufenen Zeit in der ProgressBar (sekündlich). Muss ich mir noch etwas anderes einfallen lassen. Vielleicht ist das ja auch mit nur einem Timer möglich.
mfg
Herbert
Hallo,
diese ProgressBar wird nicht während des Datentransfers verwendet, sondern als Zeit-Zeiger für die abgelaufenen Sekunden. Aber ich habe das bereits gelöst, indem ich einfach den timer->start(1000) gesetzt habe und per Signal/Slot jede Sekunde einfach den progressBar->value erhöhe.
Warum der Timer bei einem Rechner "verrückt" gespielt hat, ist mir nach wie vor ein Rätsel, aber jetzt funktioniert es wenigstens.
Vielen Dank für deine Antwort.
mfg
Herbert
diese ProgressBar wird nicht während des Datentransfers verwendet, sondern als Zeit-Zeiger für die abgelaufenen Sekunden. Aber ich habe das bereits gelöst, indem ich einfach den timer->start(1000) gesetzt habe und per Signal/Slot jede Sekunde einfach den progressBar->value erhöhe.
Warum der Timer bei einem Rechner "verrückt" gespielt hat, ist mir nach wie vor ein Rätsel, aber jetzt funktioniert es wenigstens.
Vielen Dank für deine Antwort.
mfg
Herbert