用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;
}
但是有个小问题:
就是连续俩次按下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;
}
按下了downQKey 就不停创建对象(如果Timer事件没有停止)
KeyDown -= new KeyDownHandle(FrmTestKeyDown); //KeyDown 是你的keydown事件,在第一次keydown将响应删除 创建一个1000毫秒的定时器,在响应事件里重新把KeyDown的响应加回去
keydown += new KeyDownHandle(FrmTestKeyDown); //定时器1000毫秒后重新把keydown的响应加进去
是一些返回false和true的逻辑判断,
经过检测,是连续按下俩次按键后,将timer的 Enabled属性变为false 了..还在测试中~
目前主要问题是: 在第一次按键事件后,还需要一个检查对象的过程,此时如果继续按键,此时的D方法返回的是false.导致timer的strat方法没有被调用..