多线程取MAC在XP下正常,到WINDOWS2003SERVER就不正常了。
要取整个网段的MAC地址,以免知道哪些IP地址被人用了。如果一个一个取MAC太慢,要3分钟,
如果用60个线程同时取,只要3秒,在XP下一直没有问题。现在改成网页式的,在XP下也没有问题,
因为网页IIS最终是在windows2003server下,但出现了问题,取到的在用MAC地址许多却是00-00-00-00-00-00,
或者明明IP地址在线,却取不到MAC,这两种错误情况。
如果不用多线程就不会出现问题,但网页的提交只能几秒就要应答,不可能让你等上几分钟的。
这如何处理?
[解决办法]
线程中去获取MAC地址,获取完毕发个消息告诉窗体就行了。无需同步那么复杂。
[解决办法]
还真有可能是没有同步造成的,你单线程就正常,应该不存在权限呀什么的。
[解决办法]
你是怎么处理的??你可以用一个线程专门来等待一个事件,这个事件就是所有MAC获取完成的事件,每个获取MAC的线程当获得MAC的时候就把一个公共变量+1,然后判断是不是所有的MAC都完成了,是的话就把这个变量置0,设置事件通知等待的线程任务完成。应该是不会牺牲多线程的优势的。
[解决办法]
没有同步的必要. 应该你线程的处理有问题, 不得不同步. 曾用过256个线程,很快就取到. Windows优化大师里面就用多线程扫描,你可以比较下速度.