本帖最后由 VisualEleven 于 2012-08-29 11:35:04 编辑

解决方案 »

  1.   

    回1楼:之前就是开多个线程做的,但是这样速度还是不行的。查资料的时候看到了异步模式的,就想这么做。
    问题是单独用异步Get就不会正常调用回调函数,再用一次阻塞Get才能调用,不清楚是什么原因。
    回2楼:麻烦你找找看能找到没,最近比较着急这个,虽然现在用阻塞Get做,但是效率实在太差,做设备发现的,要挨个去获取数据,许多是不能获取到的,就要等到超时太慢了。
      

  2.   

    同问,SNMP++是3.2版本,VS2010编译
    程序是老程序了,之前用VC6编译运行都正常
      

  3.   

    研究了Snmp++的源码,找到了解决方法:1. snmp = new Snmp(status);不能声明为局部变量,在函数外进行初始化。使用异步调用不允许对snmp进行销毁,否则就出现你说的情况。(这种做法在同步调用时正常)2. 声明后启动消息轮询,即snmp = new Snmp(status);snmp->start_poll_thread(1000);
       这样可以正常进入回调函数,1000是超时时间刚找到原因,未研究细理,希望对你有帮助。
      

  4.   

    不需要全局state,在get操作前start_poll_thread就行了