线程问题,分不够再加

seasoft2003 2003-10-17 07:07:45
这是我第一次开帖子,各位好,小弟有礼了。
我做了一个监视程序,是对某一网络内所有网络设备进行监视,其中检测状态时用PING,不断对所有设备PING,所以开了线程来PING,但是出现:”0x74b67d0"指令引用的“0xddddddd"内存,该内存不能为"read",我想这样:当一个IP送来需要PING时要等待上一个线程结束才能开这个线程,该怎么做。请各位帮帮忙,能给出代码吗?多给分,不够继续加,
BOOL CNetPing::Ping(CPingModal &DeviceSrc,CPingModal & DeviceTarget)
{
//UpdateData(true);

……
if(m_hEventStartPing!=NULL)
{ WaitForSingleObject(m_hEventKillPing ,INFINITE);

}

………………
AfxBeginThread(PingThread,this);
}
SetEvent(m_hEventStartPing);

return -1;

}


BOOL CNetPing::Initialize()
{
.m_hEventStartPing = CreateEvent(NULL, FALSE, FALSE, NULL);

m_hEventKillPing = CreateEvent(NULL, TRUE, FALSE, NULL);
return TRUE;
}
UINT CNetPing::PingThread(LPVOID pParam)
{
……………………


SetEvent(m_hEvenPingtKilled);
return 1;

}
m_hEventKillPing ,m_hEventStartPing都已经在构造中初始化,

我的E-MAIL:sea_soft@163.com
...全文
67 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt01 2003-10-21
  • 打赏
  • 举报
回复
UP一下
scatzr 2003-10-21
  • 打赏
  • 举报
回复
偶要分,谢谢
larryvc 2003-10-21
  • 打赏
  • 举报
回复
建议再开一个线程,让此线程始终循环监视PING线程,否则在同一个线程内是不好实现的!!
LeeZi 2003-10-20
  • 打赏
  • 举报
回复
既然你只用一个线程来工作,而且还用状态来阻塞掉主线程,那么用工作线程有什么用呢?
seasoft2003 2003-10-20
  • 打赏
  • 举报
回复
就要结账,进着有份
photoman 2003-10-19
  • 打赏
  • 举报
回复
if(AfxIsValidAddress(m_hEventStartPing))
{ WaitForSingleObject(m_hEventKillPing ,INFINITE);

}
proe 2003-10-19
  • 打赏
  • 举报
回复
that means you are stepping on the memory which you don't actually hold. the pointer must point to a invalid memory address and you try to access it's content.
no error in the code snippet, must be in the one you don't post on.
seasoft2003 2003-10-19
  • 打赏
  • 举报
回复
这是我地一次开贴,只要来的各位都给分,多谢各位了,谁给个例子,就另外给他再加100,不够还加
fantiyu 2003-10-19
  • 打赏
  • 举报
回复
0x74b67d0"指令引用的“0xddddddd"内存

表示你调用了对象已经被销毁的指针
或者引用了未被初始化的对象
seasoft2003 2003-10-19
  • 打赏
  • 举报
回复
等待中……
RichJ 2003-10-18
  • 打赏
  • 举报
回复
这种处理是不安全的,这样,开一个缓冲队列来缓存ping命令,然后线程监控该队列,如果不为空则取出头元素进行ping,这样肯定是执行完前一个再执行下一个,而且只需要开一个线程即可!
huanyun 2003-10-18
  • 打赏
  • 举报
回复

WaitForSingleObject(m_hEventStartPing,INFINITE);
WaitForSingleObject(m_hEventKillPing ,INFINITE);
huanyun 2003-10-18
  • 打赏
  • 举报
回复
替换 if(m_hEventStartPing!=NULL)
{ WaitForSingleObject(m_hEventKillPing ,INFINITE);

}
huanyun 2003-10-18
  • 打赏
  • 举报
回复
WaitForSingleObject(m_hEventKillPing ,INFINITE);
WaitForSingleObject(m_hEventKillPing ,INFINITE);
xushinhwa2003 2003-10-18
  • 打赏
  • 举报
回复
我看了您的代码,觉得没有什么问题.也许是病毒,但这种情况也不可能不能发生啊
seasoft2003 2003-10-18
  • 打赏
  • 举报
回复
省略的是批PING的内容,太长贴不开,对线程控制来说没有关系,我想用线程控制这种方法来让下一个PING操作等待上一个完成之后再开线程,各位能讲讲过程方法吗,用到的函数说的清楚些,最好有例子代码,谢谢了,分没问题,不够再给加200,再不够再加,哪位能说说啊,最好有例子说说实现过程。E-MAIL:sea_soft@163.com
flyelf 2003-10-17
  • 打赏
  • 举报
回复
代码不够详细,不能准确定位问题
seasoft2003 2003-10-17
  • 打赏
  • 举报
回复
我试过了,还是不行
xiaohyy 2003-10-17
  • 打赏
  • 举报
回复
hThread:上一线程的句柄


调用
WaitForSingleObject(hThread,INFINITE);

15,471

社区成员

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

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