用System.Timers.Timer timer实现了定时Create对象,功能基本正常(定时器的时间间隔为 1000)
但是有个小问题: 
就是连续俩次按下downQKey键的时候,首次逻辑正常,第2次触发键盘按下事件时候:
调用了timer.Stop()方法,而此时D()方法还返回了一个false,导致timer.Start()没有被调用,程序停止运行如何让连续按下KeyDown的事件能间隔1000毫秒再触发呢?谢谢代码如下: 
private System.Timers.Timer timer;//定义了一个定时器
//键盘按下
void FrmTestKeyDown(object sender, KeyEventArgs e){
         if (e.KeyCode==downQKey) {
DQ();
}}
//
public static void DQ(){
timer.Stop();
while (D()) {
timer.Start();//控制另一个对象的Create
}

}public static bool D(){
          bool f;         //...

return f;
}

解决方案 »

  1.   

    D()什么情况返回true,false我猜是不是如果没创建对象就返回true,创建了就返回false如果是这样有可能判断同一个对象。你这种写法很有问题
    按下了downQKey  就不停创建对象(如果Timer事件没有停止)
      

  2.   

    你的D是怎么写的,timer的stop不一定能立刻停止,要看它内部是否执行完成
      

  3.   

    在FrmTestKeyDown 里加一句
    KeyDown -= new KeyDownHandle(FrmTestKeyDown); //KeyDown 是你的keydown事件,在第一次keydown将响应删除 创建一个1000毫秒的定时器,在响应事件里重新把KeyDown的响应加回去
    keydown += new KeyDownHandle(FrmTestKeyDown); //定时器1000毫秒后重新把keydown的响应加进去
                
      

  4.   


    是一些返回false和true的逻辑判断,
    经过检测,是连续按下俩次按键后,将timer的 Enabled属性变为false 了..还在测试中~
      

  5.   


    目前主要问题是: 在第一次按键事件后,还需要一个检查对象的过程,此时如果继续按键,此时的D方法返回的是false.导致timer的strat方法没有被调用..