为什么我建立的多线程老是说我Access Violation

时间:2021-07-07 00:22:22

多线程的函数,但是每次都说我Access Violation


 static UINT ThreadFun1(LPVOID pParam)  //线程函数
{
UINT u=0;
CRect rt(99,99,501,501);
int index;
CMultithreadsView* pView=(CMultithreadsView*)pParam;
CDC* myDC=pView->GetDC();
myDC->MoveTo(pView->point[0]);
for(index=0;index<360;)
{
myDC->LineTo(pView->point[index]);
Sleep(10);
index++;
}
int x=3;
return u;
}

这是线程函数,我调试了一下,发现错误是myDC->LineTo(pView->point[index]);。说我非法访问,但是我明明都建立了呀。有没有大神可以指导一下。

4 个解决方案

#1


线程中不要直接操作UI,改成PostMessage,由主程序处理

#2


有没有越界?
GetDC 要配对的 ReleaseDC

#3


你可以试试传dc进入线程。

#4


Multiple Threads in the User Interface  http://msdn.microsoft.com/zh-cn/library/ms810439.aspx

#1


线程中不要直接操作UI,改成PostMessage,由主程序处理

#2


有没有越界?
GetDC 要配对的 ReleaseDC

#3


你可以试试传dc进入线程。

#4


Multiple Threads in the User Interface  http://msdn.microsoft.com/zh-cn/library/ms810439.aspx