Thread Aktivitat anzeigen?
-
Hi ...
ich habe eine kleine MFC Anwendung, die einen seperaten Thread öffnet.
Ich würde innerhalb der Dialog Anwendung nun aber gerne sehen können ob der Thread läuft oder nicht, bzw. ob er arbeitet oder nur in meinem Loop rumidlet.
Da ich den Thread zu Beginn der Anwendung starte, und ihn dann erst beim Beenden der Anwendung wieder schliesse bringt mir nur die Tatsache das ich den Thread geöffnet habe nicht viel. Ich suche also irgednwie ne Möglichkeit die Aktivität das Threads in dem Dialog anzuzeigen. Gibts da andere Controls als z.b. der Progressbar (was für meine Zwecke nicht geeignet ist)? oder habt ihr Ideen wie ich sowas machen kann?Danke schonmal
oversize
-
Du müsstest schon eine Variable nehmen, welcher Du vom Thread aus den Status gibst.
Welches Control Du dafür verwendest, ob ein Static oder ne Checkbox oder ne ComboBox oder oder oder ist Dir überlassen.
-
GetExitCodeThread
The GetExitCodeThread function retrieves the termination status of the specified thread.BOOL GetExitCodeThread(
HANDLE hThread, // handle to the thread
LPDWORD lpExitCode // termination status
);
Parameters
hThread
[in] Handle to the thread.
Windows NT/2000: The handle must have THREAD_QUERY_INFORMATION access. For more information, see Thread Security and Access Rights.lpExitCode
[out] Pointer to a variable to receive the thread termination status.
Return Values
If the function succeeds, the return value is nonzero.If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If the specified thread has not terminated, the termination status returned is STILL_ACTIVE. If the thread has terminated, the termination status returned may be one of the following:The exit value specified in the ExitThread or TerminateThread function.
The return value from the thread function.
The exit value of the thread's process.
Requirements
Windows NT/2000: Requires Windows NT 3.1 or later.
Windows 95/98: Requires Windows 95 or later.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.See Also
-
@-/-
nun aber gerne sehen können ob der Thread läuft oder nicht, bzw. ob er arbeitet oder nur in meinem Loop rumidlet.
Das gibt GetExitCodeThread NICHT zurück!
-
hm ...
GetExitCodeThread iss leider nicht ganz das was ich suche. Das gibt mir ja, wenn ich das richtig verstehe, den ExitStatus, also wie der Thread beendet wurde zurueck. Da ich ihn ja aber nicht beenden will, bzw. definitv weiss das er läuft brauch ich irgendwas anders.
Naja... vielleicht sollte ich genauer sagen, das ich eigentlich eher nen Control suche, was evtl vergleichbar sein könnte mit der Lupe, wenn man Dateien sucht. Also das es ein solches Lupen Control nicht gibt, kann ich mir denken aber vielleicht ja was anders?Hab noch nie probiert in einen IDC_STATIC aus dem Code heraus etwas reinzuschreiben. Vielleicht kann ich damit irgendwelche Status ausgaben realisieren.
Naja Danke für die Ideen
gruss oversize
-
Du nimmst einfach ne Variable, wo du den reinschreibst was der Thread gerade macht. Mit welchem Control du dann die Variable ausgibts oder verarbeitest ist dir überlassen..
aber das sagt RenéG auch schon..
-
übergebe deinem Thread das Handle deiner Hauptanwendung.
Sende dann mit PostMessage(..) eine Nachricht an deine HA.
Lege slbst die Nachricht fest.#define AMS_MSG_SERVER_ERROR (WM_APP + 5)
PostMessage(g_phWnd->m_hWnd,AMS_MSG_CLIENT_ERROR,nSocketID,(long)IDS_ERROR227);Fange deine Nachrichten in PreTranslateMessage(MSG* pMsg) ab;
(in der Hauptanwendung)switch(pMsg->message) { case AMS_MSG_SERVER_ERROR : { //PreTransServerError(pMsg->wParam,pMsg->lParam); // deine Aktionen return 0; } default : return CDialog::PreTranslateMessage(pMsg); }
In wParam und lParam kannst du dann eingene Daten übergeben.