一个简单的问题
终止线程有什么好的方法。
我在做聊天室的时候 要实现一个修改姓名的功能,我的程序现在只能修改一次姓名,你第二次修改以后,他就会两个名字交替使用,我猜是两个两个姓名公用了一个线程,这是我的源程序void CCharroomDlg::OnModify()
{
// TODO: Add your control notification handler code here
// ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->GetAddress(dwIP);
DWORD ThreadId,threadID1;
function *fun = new function;
fun->sock = m_socket;
fun->hwnd = m_hWnd;
CString strname;
GetDlgItemText(IDC_EDIT_NAME,strname);
SetDlgItemText(IDC_EDIT_RECV,strname+"进入聊天室");
int len = strname.GetLength();
char* m_name = new char[len];
m_name = strname.GetBuffer(0);
for(int i = 0; i<len; i++)
{
fun->name[i] = m_name[i];
}
fun->name[len] = '\0';
if(flag)//刚开始时 它初时化为TRUE
{
hthread1 = CreateThread(NULL,0,RecvProc,(LPVOID)fun,0,NULL);
flag = FALSE;
closeHandle(hthread1);//hthread1在头文件中定义了。
}
//_endthreadex(uExitCode1);
else{
DWORD uExitCode1;
GetExitCodeThread(hthread1,&uExitCode1);
ExitThread(uExitCode1);
hthread1= CreateThread(NULL,0,RecvProc,(LPVOID)fun,0,&ThreadId);
CloseHandle(hthread2);
}
}
我也尝试过用上面的函数关闭线程,但是他把整个窗体都关闭了。
几经同学修改 现在变得面目全非了。最后还是没有实现修改名字的功能。
如果哪个有兴趣看我的整个程序,并能够帮我把我的问题解决了,请把邮箱地址留下,解决了直接加100分。