internetseite in thread auswerten
-
hallo,
ich will eine html-seite "runterladen", bzw. "untersuchen". weil ich relativ
viel suchen, rausfinden.. will, wollte ich das ganze
in einem thread machen, damit man im eigentlichen programm weiterarbeiten kann.
als ich noch keinen thread benutzt habe, lief auch alles super - aber NU?!#include "afxinet.h"
...void CResults::StartThread(bla bla)
{
m_url = "http://www.blasebalg.de/bla.bla?bla&bla;
CWinThread* pThread = AfxBeginThread (RunThread, &m_Flags);
}UINT CResults::RunThread(LPVOID pParam)
{
CResults* pERes = (CResults*) pParam;
pERes->Thread();
return 0;
}void CResults::Thread()
{
CInternetSession session;try
{
CStdioFile* f=session.OpenURL(m_url);
//hier schmiert er jetzt immer ab
...
}
catch...wenn ich jetzt startthread aufrufe und der die runthread und der die eigentliche funktion, schmiert er immer mit unbehandeltem ausnahmefehler
ab, bzw mit assertien error in inet.cpp im debug-modus.weis jemand warum, oder wie ich es anders, vielleicht auch ohne thread
hinbekomme?
man muss aber unbedingt am programm weitermachen können, weil die abcheckerei
vermeindlich lange dauert.danke schon mal
-
- Probier es mal direkt im release mode.
- Der assertion-Fehler im debug mode liegt am Innenleben der MFC, diese ist nicht threadsicher. Manche Funktionen laufen im Workerthread, manche nicht. Versuche alle CWnd-Member-Funktionen in den Hauptthread zu legen, z.B. dadurch, dass der Workerthread user-definierte Nachrichten sendet, auf die der Hauptthread dann mit der entsprechenden Funktion antwortet.
-
release-mode hatte ich ja eh schon probiert. da hat erdann halt immer unbehandelter ausnahmefehler in ... .exe.
Cwnd-Funktionen hab ich auch keine mehr drin.
???? - hmmmmmmmmmmmmmmmmmmmmmmmmmwitzig ist ja, dass ich das thread-beispiel von henkessoft+- genommen habe
noch andere ideen?
-
fehler gefunden:
nachdem ich die #include "afxinet.h" in die headerdatei geschrieben hatte und
aus der *.cpp rausgeschm. liefs.
-
Aha!
-
sehr sehr merkwürdig
-
wars zwar nicht, läuft jetzt aber trotdem.
der url-string war leer !!! - und das scheint grob fahrlässig
zu sein.