Ich habe mit einem Thread mächtig Ärger!
Es ist eine SDI Anwendung. Ich starte in mit
pThread0 = AfxBeginThread (ThrFunLesen, this);
Funktioniert auch wunderbar. Aber das Problem ist in zu stoppen.
Ich versuche In der Methode OnDestroy zu Stoppen!
Den er soll ja automatisch gestoppt werden. Mach ich mir ein
Button für das Stoppen dann geht das!
bekomme aber immer ein Speicher leak!
Es ist eine SDI Anwendung. Ich starte in mit
pThread0 = AfxBeginThread (ThrFunLesen, this);
Funktioniert auch wunderbar. Aber das Problem ist in zu stoppen.
Code:
UINT CGR2Data::ThrFunLesen(LPVOID pParam)
{
g_pGR2Data->ThrLesen();
return 0;
}
void CGR2Data::ThrLesen()
{
cs.Lock();
while (m_Flagthr0)
{
char S1[10];
char S2[10];
RS232R();
if(!g_pGR2Fifo->Empty())
{
g_pGR2Fifo->Pop((PPaket)S1);
LonDataIn(S1);
PostMessage(m_msg,nDlgActionMsg,0,0);
if(m_bmess)PostMessage(m_msg1,nActionMsg,0,0);
if(!m_bmess)PostMessage(m_msg2,nActionMsg2,0,0);
}
if(!g_pGR2Fifow->Empty())
{
g_pGR2Fifow->Pop((PPaket)S2);
RS232W(S2);
}
//m_Flag = m_Flag;
}
cs.Unlock();
}
Ich versuche In der Methode OnDestroy zu Stoppen!
Den er soll ja automatisch gestoppt werden. Mach ich mir ein
Button für das Stoppen dann geht das!
Code:
void CGR2View::OnDestroy()
{
CFormView::OnDestroy();
// TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen
g_pGR2Data->m_Flagthr0 = FALSE;
::Sleep(0); //give control to other threads
// TerminateThread(g_pGR2Data->pThread0,0);
::WaitForSingleObject(g_pGR2Data->pThread0 , INFINITE); //wait until thread has stopped
}
bekomme aber immer ein Speicher leak!
Code:
Thread 0x8C4 wurde mit Code 0 (0x0) beendet.
Detected memory leaks!
Dumping objects ->
thrdcore.cpp(166) : {93} client block at 0x00302B10, subtype 0, 112 bytes long.
a CWinThread object at $00302B10, 112 bytes long
Object dump complete.
Thread 0x90C wurde mit Code 0 (0x0) beendet.
Das Programm "E:\Data\visual\Projekt\Gr2_0\Debug\GR2.exe" wurde mit Code 0 (0x0) beendet.