高分求救一个CWinThread的问题

Ice1 2005-05-20 01:03:14
A()
{

CLSockThread* ct = new CLSockThread(ip,port);
AfxBeginThread(ct->GetRuntimeClass());
}

我在ct初始化的时候给ct一个ip和port

但是调用完ct->GetRuntimeClass(),
在BOOL CLSockThread::InitInstance()的时候IP和PORT就丢失了。

请问这个问题应该如何解决
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phourm 2005-05-20
  • 打赏
  • 举报
回复
两行代码,创建了两个实例!
TurkeyTangYu 2005-05-20
  • 打赏
  • 举报
回复
CLSockThread* ct = AfxBeginThread( RUNTIME_CLASS( CLSockThread ) ) ;
ct->ip = ip ;
ct->port = port
这样就可以了,就像楼上的说得一样
dongfa 2005-05-20
  • 打赏
  • 举报
回复
AfxBeginThread会根据RUNTIME_CLASS自动创建对像.
你new的CLSockThread它里面没有用.
具体可以参见AfxBeginThread实现代码



CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* pThreadClass,
int nPriority, UINT nStackSize, DWORD dwCreateFlags,
LPSECURITY_ATTRIBUTES lpSecurityAttrs)
{
#ifndef _MT
pThreadClass;
nPriority;
nStackSize;
dwCreateFlags;
lpSecurityAttrs;

return NULL;
#else
ASSERT(pThreadClass != NULL);
ASSERT(pThreadClass->IsDerivedFrom(RUNTIME_CLASS(CWinThread)));

CWinThread* pThread = (CWinThread*)pThreadClass->CreateObject();
if (pThread == NULL)
AfxThrowMemoryException();
ASSERT_VALID(pThread);

pThread->m_pThreadParams = NULL;
if (!pThread->CreateThread(dwCreateFlags|CREATE_SUSPENDED, nStackSize,
lpSecurityAttrs))
{
pThread->Delete();
return NULL;
}
VERIFY(pThread->SetThreadPriority(nPriority));
if (!(dwCreateFlags & CREATE_SUSPENDED))
VERIFY(pThread->ResumeThread() != (DWORD)-1);

return pThread;
#endif //!_MT
}
lianglp 2005-05-20
  • 打赏
  • 举报
回复
你用RuntimeClass()创建一个线程类,如果用
1。
AfxBeginThread(...)创建,则在创建时会动态创建这个类对象。
楼主可以在创建一个线程类后,在InitInstance中加入ip和port.

或者
2。
ClSockThread* ct = new CLSockThread(ip,port);
ct->CreateThread(...)
84830388 2005-05-20
  • 打赏
  • 举报
回复
什么意思?你怎么判断他们丢失的?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧