Hi,
ich möchte gerne eine Datei von einem FTP Server herunterladen, dass klappt auch soweit.
Nur jedes mal wenn die Funktion aufgerufen wird, kommt es zu einer Verzögerung im Programm (als ob das Programm zeitweise eingefroren ist).
Nun habe ich schon versucht das ganze in einem weiteren Thread laufen zu lassen aber leider erfolglos :/
Code:
Kann mir da jemand helfen ?
// Edit
Omg mir ist gerade aufgefallen dass ich den Vorteil von CreateThread mit "WaitForSingleObject ( hUpdateThread, INFINITE );" missbrauche :x
ich möchte gerne eine Datei von einem FTP Server herunterladen, dass klappt auch soweit.
Nur jedes mal wenn die Funktion aufgerufen wird, kommt es zu einer Verzögerung im Programm (als ob das Programm zeitweise eingefroren ist).
Nun habe ich schon versucht das ganze in einem weiteren Thread laufen zu lassen aber leider erfolglos :/
Code:
Code:
DWORD WINAPI UpdateProc ( LPVOID lParam )
{
HINTERNET hInternet;
HINTERNET hFtpSession;
hInternet = InternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
hFtpSession = InternetConnect(hInternet, "xxx", INTERNET_DEFAULT_FTP_PORT, cUpdate.GetUserName(), cUpdate.GetPassword(), INTERNET_SERVICE_FTP, 0, 0);
if ( FtpGetFile (hFtpSession, cUpdate.GetDirectory(), "xxx", NULL, 0, FTP_TRANSFER_TYPE_BINARY, 0 ) )
{
MessageBox (NULL, "Update downloaded!\nPlease extract the new archive", "Update", MB_ICONINFORMATION );
WriteToLog ("[ Update erfolgreich heruntergeladen ]");
InternetCloseHandle(hFtpSession);
InternetCloseHandle(hInternet);
}
else
{
MessageBox (NULL, "There are no updates available!", "Update", MB_ICONINFORMATION );
WriteToLog ("[ Keine Updates verfügbar ]");
InternetCloseHandle(hFtpSession);
InternetCloseHandle(hInternet);
return 1;
} return 0;
}
void CUpdate::StartUpdate()
{
HANDLE hUpdateThread = NULL;
hUpdateThread = CreateThread ( NULL, 0, (LPTHREAD_START_ROUTINE)UpdateProc, NULL, 0, NULL );
WaitForSingleObject ( hUpdateThread, INFINITE );
CloseHandle ( hUpdateThread );
}
Kann mir da jemand helfen ?
// Edit
Omg mir ist gerade aufgefallen dass ich den Vorteil von CreateThread mit "WaitForSingleObject ( hUpdateThread, INFINITE );" missbrauche :x