qqqqqqqqqq1qqqqqqqqq
登陆_注册_帮助
2015-06-28 15:58
采纳率: 100%
浏览 2.2k

MFC多线程,与FTP连接

图片说明

问题貌似出现在 AfxBeginThread(mtQuery, pParam, THREAD_PRIORITY_NORMAL, 0,NULL);
这一行代码中。函数 mtQuery 如下。
为什么会出现上面图片那一行的错误。。

#ifndef MT_H

#define MT_H

#include "stdafx.h"
#include "afxinet.h"

typedef struct PARAM{
CListBox * pListBox;
CString strFtp;
CString strUCount;
CString strUPwd;
}*PPARAM;

UINT _cdecl mtQuery(LPVOID pParam)
{
PPARAM pparam = (PPARAM)pParam;
CListBox * pListBox = pparam->pListBox;

CString strFtp = pparam->strFtp;
CString strUCount = pparam->strUCount;
CString strUPwd = pparam->strUPwd;


CInternetSession * pSession = new CInternetSession(NULL, 1, PRE_CONFIG_INTERNET_ACCESS);
CFtpConnection * pFtpConnection;
try{
    pFtpConnection = pSession->GetFtpConnection(strFtp, strUCount, strUPwd, 21, TRUE);
}
catch (CInternetException* pEx){
    TCHAR error[1024] = { 0 };
    pEx->GetErrorMessage(error, 1024);
    AfxMessageBox(error);
    pEx->Delete();
    pFtpConnection = NULL;
}
if (pFtpConnection != NULL)
{

    CFtpFileFind * pFileFind = new CFtpFileFind(pFtpConnection);

    if (pFileFind != NULL)
    {
        BOOL bContinue = pFileFind->FindFile(L"*");
        if (!bContinue)
        {
            pFileFind->Close();
            pFileFind = NULL;
        }
        while (bContinue)
        {
            bContinue = pFileFind->FindNextFile();
            CString strFileName = pFileFind->GetFileName();
            if (pFileFind->IsDirectory())
            {
                strFileName = L"[" + strFileName + L"]";
            }
            pparam->pListBox->AddString(strFileName);
        }

        if (pFileFind != NULL)
        {
            pFileFind->Close();
            pFileFind = NULL;
        }
        delete pFileFind;
    }
    if (pFtpConnection!=NULL)
    {
        pFtpConnection->Close();
        delete pFtpConnection;
    }

    if (pSession!=NULL)
    {
        pSession->Close();
        delete pSession;
    }
}
return 0;

}

#endif

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • oyljerry
    oyljerry 2015-06-28 23:42

    p Data,pStringManager两个对象是否为合法指针。

    点赞 评论
  • qqqqqqqqqq1qqqqqqqqq
    登陆_注册_帮助 2015-06-29 07:39

    好的。问题已经找到了。。由于调用AfxBeginThread之后,主线程把这个线程的参数个delete掉了。。才开始多线程,,意识不够到位啊~~~

    点赞 评论

相关推荐