AfxBeginThread创建线程后,不能执行线程入口函数。有时候执行到线程入口函数一半的时候就返回。 5
其中str1是CString类型的。g_bFlag全局的。////////////////////////////////////////////////////////...
其中str1是CString类型的。
g_bFlag 全局的。
////////////////////////////////////////////////////////////////////////////////////////////()第一段代码
LPSTR lpstr=str1.GetBuffer(2);
LPVOID lpvoid=(LPVOID)lpstr;
str1.ReleaseBuffer();
CWinThread* th;
th = AfxBeginThread((AFX_THREADPROCConnectFtp,lpvoid,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
//WaitForSingleObject(th->m_hThread,INFINITE);
Sleep(3000);
//////////////////////////////////////////////////////////////////////////////////////////第二段代码
if (g_bFlag ==false) //Ftp连接失败
{
m_strList.AddString(str1+"号站连接失败!请检查你的连接情况!");
}
else //Ftp连接成功
{
m_strFtpInfo = FtpClient.GetFtpInfo(); //获取服务器返回的连接信息
AddBlackInfo(m_strFtpInfo); //把服务器返回的信息分解后加载在ListBox中
m_strList.AddString(str1+"号站连接成功,正在上传IP配置文件……");
}
//////////////////////////////////////////////////////////////////////////////////第三段代码
ConnectFtp是静态的线程函数
UINT CIPConfigDlg::ConnectFtp(LPVOID pFtp)
{
bool bFlage = NULL;
CFtpClient FtpClient;
CString str=(LPCTSTR)pFtp;
if (FtpClient.FtpClientConnect("128.0.0."+str,"root","root"))
{
g_bFlag = true;
return 1;
}
else
{
g_bFlag = false;
return 0;
}
}
问题是,我的线程入口函数不能执行。理想的执行顺序是第一段代码、第三段代码、第二段代码。
而现在程序执行的顺序是第一段代码、第二段代码、第三段代码。 展开
g_bFlag 全局的。
////////////////////////////////////////////////////////////////////////////////////////////()第一段代码
LPSTR lpstr=str1.GetBuffer(2);
LPVOID lpvoid=(LPVOID)lpstr;
str1.ReleaseBuffer();
CWinThread* th;
th = AfxBeginThread((AFX_THREADPROCConnectFtp,lpvoid,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
//WaitForSingleObject(th->m_hThread,INFINITE);
Sleep(3000);
//////////////////////////////////////////////////////////////////////////////////////////第二段代码
if (g_bFlag ==false) //Ftp连接失败
{
m_strList.AddString(str1+"号站连接失败!请检查你的连接情况!");
}
else //Ftp连接成功
{
m_strFtpInfo = FtpClient.GetFtpInfo(); //获取服务器返回的连接信息
AddBlackInfo(m_strFtpInfo); //把服务器返回的信息分解后加载在ListBox中
m_strList.AddString(str1+"号站连接成功,正在上传IP配置文件……");
}
//////////////////////////////////////////////////////////////////////////////////第三段代码
ConnectFtp是静态的线程函数
UINT CIPConfigDlg::ConnectFtp(LPVOID pFtp)
{
bool bFlage = NULL;
CFtpClient FtpClient;
CString str=(LPCTSTR)pFtp;
if (FtpClient.FtpClientConnect("128.0.0."+str,"root","root"))
{
g_bFlag = true;
return 1;
}
else
{
g_bFlag = false;
return 0;
}
}
问题是,我的线程入口函数不能执行。理想的执行顺序是第一段代码、第三段代码、第二段代码。
而现在程序执行的顺序是第一段代码、第二段代码、第三段代码。 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询