MFC多线程画图,该如何解决

MFC多线程画图
写了个多线程画图函数
UINT ThreadFuncDraw(LPVOID lpParam)
{
threadInfo* pInfo=(threadInfo*)lpParam;
critical_section.Lock();

if (pointArray.size() != 0)
{
int n = pointArray.size();
for (int i = 0;i < pointArray.size()-1;i++)
{
/*
(pInfo->pDC)->MoveTo(pointArray[i].x, pointArray[i].y);
(pInfo->pDC)->LineTo(pointArray[i+1].x, pointArray[i+1].y);*/

}
}
pInfo->pDC->MoveTo(0, 0);
pInfo->pDC->LineTo(460, 230);
critical_section.Unlock();
//(pInfo->pDC)->Rectangle(CRect(CPoint(0,0),CPoint(100,100)));
//(pInfo->pDC)->LineTo(100, 100);
return 1;
}
然后在CFenXingTuView::OnDraw(CDC* pDC)中创建线程调用该函数,函数的参数是传入了内存中的位图CD,
        Info.pDC = &dcMem;
pThread = AfxBeginThread(ThreadFuncDraw,&Info);
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,SRCCOPY);

//将内存DC上的图象拷贝到前台

//绘图完成后的清理
critical_section.Lock();
dcMem.DeleteDC(); //删除DC

bmp.DeleteObject(); 
但是有时候线程函数在DeleteDC();之前执行,有时候在DeleteDC();之后执行,当让在DeleteDC();之后执行时会失败,我认为这应该是操作所分配的时间片所造成的,但是怎么解决这个问题呢
------解决方案--------------------
WaitForSingalObject
------解决方案--------------------
需要使用临界区或锁。
《Windows核心编程》