我用C写了个动态连接库,其中有一个导出的函数需要运行相当长的时间。在C中调用这个函数的好好的没有问题,可以一直执行到该函数结束,但是在Dllimport到C#后,发现运行到一定的时候,程序就停止不走了。打开任务管理器发现,CPU时间一直不变。我实在是想不明白怎么回事情,请大家帮忙解决一下好吗?

解决方案 »

  1.   

    c这个dll是否能改一下,或者在c中加入debug信息,看看执行到什么位置不动了。
      

  2.   

    捕捉一下bug。看看调用是否正常再说吧。
      

  3.   

    先把传进去的入口参数在C里面debug看下对不对.
      

  4.   

    几万行就不能改 不能调试?使用二分法来分析一下, 
    1。 M 为 N/2, 其中N为总的代码数2。在第M行的地方 加一句调试信息,3。然后测试,如果能看到这句信息 ,则将M改为 N - M/2,
       如果看不到这个调试信息,则将M改为 M/2重复2,直到找到问题
      

  5.   

    那个函数开始运行的时候会动态生成几十个线程,我确实是跟踪过,但是没有什么结果。
    我估计是.net 处于某些原因,对一些Dllimport的东西设置了某些限制,超过一定的时间就会停止运行。