Download Programm hängt sich auf....
-
Hi,
Ich hab ein Prog geschrieben, das eine verschlüsselte IP und Dateienamen aus einer Liste läd, und herunterläd.
Das Problem ist, Sobald man mit dem Downloaden anfängt, "hängt" sich der Dialog auf, sprich er reagiert nichtmehr auf eingaben.
Der File Wird trotzdem weiterhin runtergeladen.der wichtigste code:
... FileLokal.Open(m_Lokal+Datei,CFile::modeCreate | CFile::modeWrite); pNetFile = ftps->OpenFile(Datei, GENERIC_READ, FTP_TRANSFER_TYPE_BINARY, 1); int nLokalFileSize = 0; while(15000000 > nLokalFileSize) { pNetFile->Read(cReadBuffer, 512); FileLokal.Write(cReadBuffer, 512); } FileLokal.Close(); pNetFile->Close(); }
Der code ist gekürzt....
Eigentlich hatte ich den DL zuerst mit CFTPConnection::GetFile gelöst, aber damit konnte ich keine Progressbar einfügen.
Ich möchte nun wissen, wie kann ich während dem DL trotzdem auf eingaben vom benutzer reagieren (Das Fenster schaltet auf "Reagiert nicht" um während dem dl)
Danke sehr!!
-
Du musst die Downloadfunktion in einen Thread auslagern.
-
Danke, aber jetzt stehe ichs chon vor dem nächstem Problem:
ich hab mir mal das tut hier angeschaut: http://www.codeworx.org/cpp_tuts_1_5.phpLeider bekomme ich einen error
fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds
Der Error kommt nur dann, wenn der Projekt auf Multithreaded steht ( im tut: (Projekt->Einstellungen), unter dem Reiter 'C/C++', Kategorie: 'Code Generation', muss unter Laufzeit Bibliothek auf 'Multithreaded' umgestellt werden)
-
stell um auf 'Multithreaded DLL'
-
Kannst du mir mal dein kompleettes Beispiel schicken.
Ich benötige eine ähnliche Variante für mein Downloadprogramm mit Statusbar.
Zudem interessiert mich wie ich den Wert 15000000 den du in der while Schleife benutzt dynamisch gestalten kann, also wie kann ich die Größe der Datei auf demServer herausfinden