MFC多线程文件传输的退出
最近用MFC做网络文件传输的功能,用的是多线程,在文件传输过程中,可能会退出,我目前是先等待文件传完,在退出,问题是会非常的卡,如果直接退出的话,又会造成内存泄漏,详见下述:
//网络传输信息
typedef struct NetInfo
{
CString m_strSrvIP;
CString m_strFilePath;
UINT m_nPort;
Log *m_pCliLog;
int m_nState;
HWND m_hWnd;
NetInfo()
{
m_strSrvIP = _T("");
m_strFilePath = _T("");
m_nPort = -1;
m_pCliLog = NULL;
m_hWnd = NULL;
m_nPort = -1;
m_nState = 1;
}
}NetInfo;
//监听线程
DWORD WINAPI ReceThread(LPVOID lpparam)
{
NetInfo *ptNetInfo = (NetInfo*)lpparam;
//结构体中含有Cstring,会造成内存泄漏
while(TRUE)
{
if (2 == ptNetInfo->m_nState)
{
break;
}
//处理文件传输的代码
}
}
当退出是,我会在主线程中把ptNetInfo->m_nState的值改为2,然后在WaitforSingleObject()
至到退出,但是文件大的话,就非常卡,如果直接强制关闭线程,又会造成内存泄漏,求大神指点一下,要如何才能既快又无内存泄漏的关闭程序。