小弟现在做一个网络测试工具,需要以1毫秒为间隔发送数据包,但是目前c#中三种计时器的精度都达不到,最多就是10毫秒左右,如果使用 QueryPerformanceCounter(out startTime);QueryPerformanceFrequency(out freq);计算差值来做触发事件的计数器占用cpu几乎是100%,在c++中有多媒体计数器timesetevent()可以达到1毫秒的触发精度,不知道在c#中是否有相应的函数啊,进度比较赶,多谢各位了!!!!!

解决方案 »

  1.   

    如果C++有,我想通过dll或API等方法应该能搞过来.但没做过.
    LZ说的1ms是 发送一个数据包(不管发了多长时间),然后1ms后再发送一个是吗? 用Sleep(1)不行吗?
      

  2.   

    毫秒级,cpu不耗光才怪呢
    秒级已经可以了
    很多的扫描软件都是秒级的
    不用那么频繁了,都还没有处理结果恩
      

  3.   

    要以1毫秒为精度,建议不要使用.NET了,直接用VC6.0吧。
      

  4.   

    整个软件都是用c#写的,所以用vc实现也没有什么意义,我在msdn上查到媒体计时器timesetevent()需要的环境是
      Windows XP: Included in Windows XP only.
      Header: Declared in Mmsystem.h; include Windows.h.
      Library: Use Winmm.lib.如何在c#文件中加入这些文件呢,小弟比较菜,请各位指点!多谢
      

  5.   

    那些都是c用的静态接口,C#得动态载入dll