Programm soll mehrere male eine Seite von einem Server holen (tut nicht)
-
Ich habe folgenden Thread:
UINT InternetSteuerungsfkt (LPVOID pParam) { CCommunication *ThreadCom = static_cast< CCommunication * >(pParam); const UINT PUFFRGR = 1000; CInternetSession InetSession; CHttpConnection *pHttpCon = NULL; CHttpFile *pHttpFile = NULL; INTERNET_PORT Port = 80; char *puffer = new char[PUFFRGR]; try { for (register int i = 0; i < ThreadCom->getCount (); i++) { pHttpCon = InetSession.GetHttpConnection (ThreadCom->getUrl (), Port); pHttpFile = pHttpCon->OpenRequest (CHttpConnection::HTTP_VERB_GET, "/"); pHttpFile->SendRequest (); int BytesGelesen = pHttpFile->Read (puffer, PUFFRGR-1); puffer[BytesGelesen] = '\0'; //PostMessage (ThreadCom->getHwnd (), WM_STATUS, i, 0); CString str; str.Format ("%d\n""%s\n", i, ThreadCom->getUrl ()); AfxMessageBox (str); Sleep (ThreadCom->getPause () * 1000); } } catch (CInternetException *e) { AfxMessageBox ("e"); e->Delete (); } delete[] puffer; delete pHttpFile; delete pHttpCon; return 0; }Über ein Dialog frage ich nach der url, der Anzahl der Wiederholung und der Wartezeit,
die Daten kommen richtig im Thread an, habe ich bereits getestet. Aber aus
mir einem unerklärlichen Grund, wird nur 1mal die Schleife durchlaufen,
es poppt nur einmal die MessageBox in der Schleife auf.
Muss ich die Objekte für eine weitere Anfrage irgendwie vorbereiten, oder was
mache ich falsch?Ich habe noch ein zweites Problem, ich habe in dem Desktruktor des Dialoges,
ein UpdateData (true); dieses löst jedoch in der Funktion bei ASSERT(::IsWindow(m_hWnd)); // calling UpdateData before DoModal?
einen Fehler aus, mir ist nicht klar weshalb, da zu diesem Zeitpunkt das Fenster
ja noch existiert.Danke für eure Hilfe

P.S. Ich will damit keinen Ärger machen, nur da ich krampfhaft auf der Suche
nach etwas bin das ich programmieren kann, bin ich irgendwie auf diese Idee
gekommen
-
Habe eben festgestellt woran es lag, die Reihenfolge in der Initialisierungsliste,
hatte ich nicht eingehalten, wodurch pause und count vertauscht waren
Das zweite Problem habe ich aber noch

-
Hallo,
der Destruktor ist in MFC definitiv der falsche Platz, noch irgendwelche Fenster-Aktionen ausführen zu wollen. Das Fenster wird bei einem modalen Dialog z.B. bereits in DoModal, nach Verlassen der "modal loop", zerstört, und das ASSERT schlägt zu. Es ist doch auch nicht nötig, ein UpdateData noch so spät ausführen zu wollen, da dies ja sowieso bei "normaler" Beendigung eines Dialogs mit dem "OK"-Button (besser gesagt, nach Aufruf von CDialog::OnOk()) passiert.
MfG
-
Probe-Nutzer schrieb:
Hallo,
der Destruktor ist in MFC definitiv der falsche Platz, noch irgendwelche Fenster-Aktionen ausführen zu wollen. Das Fenster wird bei einem modalen Dialog z.B. bereits in DoModal, nach Verlassen der "modal loop", zerstört, und das ASSERT schlägt zu. Es ist doch auch nicht nötig, ein UpdateData noch so spät ausführen zu wollen, da dies ja sowieso bei "normaler" Beendigung eines Dialogs mit dem "OK"-Button (besser gesagt, nach Aufruf von CDialog::OnOk()) passiert.
MfG
Ok danke, wusste ich nicht.