C
wie sollte ich den thread beenden?
in der ersten befehlszeile meiner threadfunktion ExecuteThread() bekomme ich nach wie vor eine zugriffsverletzung. die funktion ist global definiert da ich sonst probleme mit dem ersten parameter aus AfxBeginThread() bekommen habe.
UINT ExecuteThread(LPVOID pParam)
{
((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->pSP1 = (double*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
2 * sizeof(double) * ((CWiwoDlg*)AfxGetMainWnd())->GlPar.nNperB);
((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->pSP2 = (double*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
2 * sizeof(double) * ((CWiwoDlg*)AfxGetMainWnd())->GlPar.nNperB);
((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->phlp = (double*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
2 * sizeof(double) * ((CWiwoDlg*)AfxGetMainWnd())->GlPar.nNperB);
// Generiert ein Hanning-Fenster in pSP2
for(int i=0; i < ((CWiwoDlg*)AfxGetMainWnd())->GlPar.nNperB; i++)
{
((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->pSP2[i] = fq*0.5 * (1 - cos(2*M_PI*i / ((CWiwoDlg*)AfxGetMainWnd())->GlPar.nNperB));
}
while(((CWiwoDlg*)AfxGetMainWnd())->m_bThreadFlag)
{
if(((CWiwoDlg*)AfxGetMainWnd())->DSync)
{
((CWiwoDlg*)AfxGetMainWnd())->DSync = false;
if(((CWiwoDlg*)AfxGetMainWnd())->pDP.x1 != 0)
{
((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->DataTransfer();
Sleep(0); // Setzt Thread auf ready!
}
}
}
HeapFree(GetProcessHeap(), 0, ((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->phlp);
HeapFree(GetProcessHeap(), 0, ((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->pSP2);
HeapFree(GetProcessHeap(), 0, ((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->pSP1);
return 0;
}