C++ 线程用于从多个IP摄像头同时保存图像时应用程序中的异常

C++ 线程用于从多个IP摄像头同时保存图像时应用程序中的异常,c++,exception,opencv,mfc,C++,Exception,Opencv,Mfc,我正在开发一个应用程序,在这个应用程序中,我连接应用程序并显示来自IP摄像头的多个视频源。我能够得到的视频饲料,这是太滞后(工作得到解决方案,以消除滞后)。在应用程序中,我有一个按钮,点击它可以从所有连接的IP摄像头拍摄50张照片。但我实现的代码在实现线程时会出现异常。在没有线程的情况下使用它可以正常工作。下面是按钮事件的代码 void CDialogBasedVideoDlg::OnBnClickedButtonTakePic() { int nIndex = m_CamListBox.Get

我正在开发一个应用程序,在这个应用程序中,我连接应用程序并显示来自IP摄像头的多个视频源。我能够得到的视频饲料,这是太滞后(工作得到解决方案,以消除滞后)。在应用程序中,我有一个按钮,点击它可以从所有连接的IP摄像头拍摄50张照片。但我实现的代码在实现线程时会出现异常。在没有线程的情况下使用它可以正常工作。下面是按钮事件的代码

void CDialogBasedVideoDlg::OnBnClickedButtonTakePic()
{
int nIndex = m_CamListBox.GetCurSel();
CStaticEx *objStaticEx = (CStaticEx*)m_StaticArray.GetAt(nIndex);
objStaticEx->StartThreadToCaptureUSBCam();//threading implementation gives exception.
//objStaticEx->CapturePicture();//this func works fine(without threading)
// TODO: Add your control notification handler code here
}
我已经超越了静态类,它动态创建一个图片控件并显示实时视频提要,线程是在这个类中实现的,在这个类中保存图像。下面是用于捕获图像和线程功能的代码

void CStaticEx::CapturePicture(void)
{
CString csFileDir;
CString csFileName;

csFileDir.Format(DIR_USB_CAM_NAME,m_IpAddr);
if(IsDirExist(csFileDir)== false){
    CreateDirectory(csFileDir, NULL);       
}
CString csStr = csFileDir;
csStr += RANDOM_FILE_SEARCH;
int nNoOfFile = CountFileNumInDir((char*)csStr.GetBuffer());
csFileDir += DBL_SLASH;

int i = 0;
do{
    csFileName.Format(FILE_NAME, csFileDir, (m_nCamID+1));
    CString csCount;
    csCount.Format(_T("%d"),(nNoOfFile+1));
    csFileName += csCount;
    csFileName += JPG;
    m_pFrameImg = cvQueryFrame( m_pCamera ); //<----Exception come at this point 
    if(m_pFrameImg){
        cvSaveImage(csFileName, m_pFrameImg);
        i++;
        nNoOfFile++;
        csFileName = _T("");
    }
}while(i < 50);
 }
  void CStaticEx::StartThreadToCaptureUSBCam(){
THREADSTRUCT *_param = new THREADSTRUCT;
_param->_this = this;
AfxBeginThread(StartThread,_param);


 }

 UINT CStaticEx::StartThread (LPVOID param)
 {
THREADSTRUCT*   ts = (THREADSTRUCT*)param;
//AfxMessageBox("Thread Started");
ts->_this->CapturePicture();
return 1;
 }
抛出的异常如下所示

Windows has treggered a breakpoint in DialogBasedVideo.exe.
This may be due to a corruption of heap, which indicates a bug in DialogBasedVideo.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while dialogbasedvideo.exe has focus.
The output window may have more diagnostic information. How do i get rid of this exception. 
所有的专家请帮助我。我正在使用VS2010和Windows7,OpenCv2.4.6。提前谢谢