Render()はワーカースレッドに置いたままでいいんじゃないのか?
こんなイメージ

int CThreadxxx::Run()
{
while(WaitForSingleObject(m_hEventEndRender,10000) == WAIT_TIMEOUT)){
if(m_hWndView){
CClientDC dc(m_pView);
m_pView->SendMessage(WM_USER_START_RENDER, 0, (LPARAM)(CDC*)&dc)) //制御待たせるためにSendMessage
  m_pView->Render(&dc);
}
}
}

LRESULT CScrollViewxxx::WindowProc(UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch (pMsg->message){
  case WM_USER_START_RENDER:
{
ASSERT_KINDOF(CDC, lParam);
CDC* pDC((CDC*)lParam);
if(pDC->GetSafeHdc() != NULL) {
OnPrepareDC(pDC);
SetOrigin(pDC);
}

return 0;
}

return CView::WindowProc(msg, wParam, lParam);
}