调用api:timeGetTime来取得当前时间。
long t1;
t1 = timeGetTime;
while(true)
{
  if(timeGetTime - t1>你需要的间隔的豪秒数)
  {
     t1=timeGetTime;
     做你需要做的事;
  }
}最好是另外开一个线程来做这个事。不然你的cpu回完全占用.其他的方法我就不知道了。

解决方案 »

  1.   

    sorry我看成豪秒了。
    如果要us那只有你自己根据你用的cpu的机器周期。然后用汇编语句来延时了。
    很麻烦的。没种cpu的机器周期都不一样的。
      

  2.   

    //timeGetTime只能返回毫秒;不用api,可以用System.Environment.TickCount;
    //我用下面方法返回10,也就是说10毫秒一次
    //Timer根本不能达到毫秒!差远了,不信你做做实验!
    //能做到微秒吗?
    int t1=System.Environment.TickCount;
    while(true)
    {
    if (System.Environment.TickCount -t1>1) 
    this.Text=Convert.ToString (System.Environment.TickCount -t1);
    t1=System.Environment.TickCount;
    }
      

  3.   

    我找了半天就是没有找到相关的方法
    建议你到游戏开发相关的版或者论坛去问,directx里面一定有这种精确定时的方法的,搞游戏编程的应该会知道
      

  4.   

    游戏编程也根本用不到微秒级定时器,没有系统特权级根本不可能,到了Ring0,目前PC机上的高精度定时器恐怕也产生不了比较精确的1微秒,用指令延迟只能在一台机器上大致计算,也不可靠。
    说实在的,微秒级还要什么“调用事件方法”已经是笑话了。
    有些不好听了,请包涵。
      

  5.   

    有关单片机和并口通信的问题通信的问题的补充!!(剑心,感谢各位)
        现在正在做一个试验,具体是这样的:用一个红外线接收器接收信号,红外线接收器有三条脚,一条是接微机电源地线,一条是接+5V和一条是接并口的状态位(5个状态位中,我用P7位(打印机端口的状态地址线有5位可以接收0V-+5V的信号,0V代表低电平,+5V代表高电平.)来接红外线接收器的发信端,用C#编了好了一个程序,实现的功能是:当按下电视机或空调机的遥控器时,程序画出信号的波形图,我是用NET中的timer来做查询扫描的.由于timer的最小时间单位是ms,因此精度不是很好,想用100ns来做.正在思考中,不知大家有什么思路呢?
        在这里先多谢有回答这个问题的人.
        我现在的思路是:
    1用中断,但只有一条信号线,而没有中断线
    2用线程,我正在钻啊钻中呢!,
    3不知能否调用微机的时钟发生器来做
         4就象平平说的,用API
    5没有其它办法了,就用串口来接收。(不知这是不是比用并口更简单呢)。
        大家有否好思路,请写一下,好吗?
        是了,我想给很多分出去的,但为什么系统说我只能给出24分呢?//  说实在的,微秒级还要什么“调用事件方法”已经是笑话了。
    //  有些不好听了,请包涵。           (repus()朋友说的极是!!),
    不好意思,我可能记错了,应该是S才到mS才到nS才到微秒,对吧,我可能想说的是100nS定时查询的。
           再一次感激跟帖的各位,是了,平平,你现在正忙于什么呢?我以前是用VB来编程的,现在转C#,不过我们公司编的比较多的还是和信号,接口有关的,我不知道我是否应该学VC。NET呢不过我总想用一心一意地学好门语言,不想学太多的。
      

  6.   

    有关单片机和并口通信的问题通信的问题的补充!!(剑心,感谢各位)
        现在正在做一个试验,具体是这样的:用一个红外线接收器接收信号,红外线接收器有三条脚,一条是接微机电源地线,一条是接+5V和一条是接并口的状态位(5个状态位中,我用P7位(打印机端口的状态地址线有5位可以接收0V-+5V的信号,0V代表低电平,+5V代表高电平.)来接红外线接收器的发信端,用C#编了好了一个程序,实现的功能是:当按下电视机或空调机的遥控器时,程序画出信号的波形图,我是用NET中的timer来做查询扫描的.由于timer的最小时间单位是ms,因此精度不是很好,想用100ns来做.正在思考中,不知大家有什么思路呢?
        在这里先多谢有回答这个问题的人.
        我现在的思路是:
    1用中断,但只有一条信号线,而没有中断线
    2用线程,我正在钻啊钻中呢!,
    3不知能否调用微机的时钟发生器来做
         4就象平平说的,用API
    5没有其它办法了,就用串口来接收。(不知这是不是比用并口更简单呢)。
        大家有否好思路,请写一下,好吗?
        是了,我想给很多分出去的,但为什么系统说我只能给出24分呢?//  说实在的,微秒级还要什么“调用事件方法”已经是笑话了。
    //  有些不好听了,请包涵。           (repus()朋友说的极是!!),
    不好意思,我可能记错了,应该是S才到mS才到nS才到微秒,对吧,我可能想说的是100nS定时查询的。
           再一次感激跟帖的各位,是了,平平,你现在正忙于什么呢?我以前是用VB来编程的,现在转C#,不过我们公司编的比较多的还是和信号,接口有关的,我不知道我是否应该学VC。NET呢不过我总想用一心一意地学好门语言,不想学太多的。
      

  7.   

    我在接收isa槽信号时不是用的什么定时器来做的。
    我是创建了一个线程不停的想isa卡上发送指定。和接收经过Ad转换过的信号。然后绘在窗体上形成一条扫描线。
    在c#里用线程很方便啊。
    我的接收程序大概就是这么个思路:
    while(true)
    {
      发送指定
      判断AD转换是否完成
      接受数据显示在屏幕上
    }
    然后开一个线程做这些事。
    现在的机器走这写指令很快的。应该可以做到你要就的速度