在一个线程中启动一个新的线程,并且将原来线程中的某些参数传到新的线程中,传过来之后,发现除了int、long型的参数值传递准确,char型的出现乱码,不知什么原因?
我的新线程是向数据库里面填加新的记录,不知什么原因,添加不上,我调试的时候发现填加记录的语句根本不执行!!请高手指教!!能否详述一下线程之间的参数传递和线程之间的相互启动?
我的新线程是向数据库里面填加新的记录,不知什么原因,添加不上,我调试的时候发现填加记录的语句根本不执行!!请高手指教!!能否详述一下线程之间的参数传递和线程之间的相互启动?
这样传递是用强制转换就可以了!没有问题!我就是这样的!
or SendMessage(), 但要注意synchronization
up
up
packetsdata=new packetdata;
packetsdata->ip_source="202.194.196.116";
packetsdata->ip_destination="202.194.196.116";
packetsdata->packet_length=1000;
packetsdata->packet_type="tcp";
packetsdata->port_destination=80;
packetsdata->port_source=80;
dataindbthr=::AfxBeginThread(DataInDBProc,packetsdata,THREAD_PRIORITY_NORMAL);
应该
packetsdata->ip_source="202.194.196.116";
packetsdata->ip_destination="202.194.196.116";
packetsdata->packet_type="tcp";
改成
strcpy();
因为这不是 CString,而是 char* !!!
strcpy(packetsdata->ip_destination,"202.194.196.116");
strcpy(packetsdata->packet_type,"tcp");
说是不安全。 ;(
您可以给我发Email [email protected]
UINT DataInDBProc(LPVOID pParam)
{
packetdata *packetsin;
CPacketContent *packetcontent;
packetsin=new packetdata;
packetsin=(packetdata *)pParam;
if (pParam==NULL)
{
return -1;
}
packetcontent=new CPacketContent; if (!(packetcontent->IsOpen()))
packetcontent->Open(); if (!(packetcontent->IsEOF()))
packetcontent->MoveLast(); packetcontent->AddNew();
packetcontent->m_ip_source=packetsin->ip_source;
packetcontent->m_ip_destination=packetsin->ip_destination;
packetcontent->m_packet_length=100;//packetsin->packet_length;
packetcontent->m_packet_type=packetsin->packet_type;
packetcontent->m_port_destination=packetsin->port_destination0;
packetcontent->m_port_source=23;//packetsin->port_source;
packetcontent->Update(); packetcontent->Close();
delete packetcontent;
delete packetsin;
return 0;}
不知什么原因,调试的时候发现程序执行到open,接着就回到packetsin=(packetdata *)pParam;语句循环执行,为何???
packetsin=new packetdata;
packetsin=(packetdata *)pParam;如果有多个同样的线程在运行,跟踪的时候可能进入另外一个线程。你可以在debug/thread菜单切换到需要跟踪的线程。