win98 <=> winXP Incompatibilität
-
Hallo...ja es geht wieder (indirekt) um Threads...
Und zwar scheint mein Workerthread unter win98 nicht starten zu wollen. Unter winXP und winNT läuft er aber einwandfrei.
Ich benutze:CreateThread(NULL, 2000, startThread, this, 0, NULL);oder
AfxBeginThread(startThread, this, THREAD_PRIORITY_NORMAL);Beide Befehle scheinen nicht so recht zu wollen unter win98.
Hat jemand eine Idee, was das Problem sein könnte?
Bin um jeden Hinweis dankbar.Grz daboss
-
Hallo,
CreateThread(NULL, 2000, startThread, this, 0, NULL);das kann nicht funktionieren unter Win98, siehe:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createthread.asp
AfxBeginThread(startThread, this, THREAD_PRIORITY_NORMAL);das sollte funktionieren, ein paar nähere Angaben, was da nicht funktioniert, wären sinnvoll für jeden, der sich mit deiner Frage beschäftigen soll
MfG
-
Besten Dank!!!
Ich versuche meine Beiträge eben immer möglichst knapp zu halten. Darum ist dieser wohl etwas zu kurz ausgefallen.
Ja hab wohl einen Fehler gemacht, als ich AfxStartThread() ausprobiert habe... Es funktioniert doch! Doch dafür gibt es einen Fehler mit der Funktion WaitForSingleObject(), wenn ich den Workerthread wieder beenden möchte. Denn dann übergebe ich ihr einen Pointer auf das CThread Object und nicht einen HANDLE darauf. Und ausserdem würde ich doch lieber mit CreateThread() arbeiten.
Leider schnall ich nicht so ganz was der letzte Parameter ist, den ich bis jetzt auf NULL gesetzt hatte. Aus MS' Erläuterung werde ich nicht so ganz schlau
:HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize, // initial stack size LPTHREAD_START_ROUTINE lpStartAddress, // thread function LPVOID lpParameter, // thread argument DWORD dwCreationFlags, // creation option LPDWORD lpThreadId // thread identifier );lpThreadId [out] Pointer to a variable that receives the thread identifier. Windows NT/2000/XP: If this parameter is NULL, the thread identifier is not returned. Windows 95/98/Me: This parameter may not be NULL.Hast du eine Ahnung wie ich diesen geheimnisvollen letzten Parameter bekomme?
Weisst du vielleicht auch wie ich den Stack berechne (2. Param.) ?THX!!!
Grz daboss
-
DWORD dwThreadId;
CreateThread(..............&dwThreadId);
CreateThread schreibt dann die Thread Id in deine Variable.
Zum Stack einfach 0 benutzen.
If this parameter is zero, the new thread uses the default size for the executable.
-
Muchas Gracias!!!
grz daboss