C# 重新启动计时器
我正在从事一个C#项目,在代码方面遇到了一些问题(见下文)。当我运行项目时,Timer Tick事件似乎会重复自身,它只是做注释所表示的事情,我倾向于,然后我站起来,我希望它重复自身,所以我不断地站起来并倾向于,是的,在datagridview“on”选择中我有C# 重新启动计时器,c#,datagridview,timer,C#,Datagridview,Timer,我正在从事一个C#项目,在代码方面遇到了一些问题(见下文)。当我运行项目时,Timer Tick事件似乎会重复自身,它只是做注释所表示的事情,我倾向于,然后我站起来,我希望它重复自身,所以我不断地站起来并倾向于,是的,在datagridview“on”选择中我有timer1.Start() 计时器不工作,因为代码中存在逻辑问题,因为计时器永远无法到达 if (Countername == 2) { Countername = 0; } 因为在值重置为零之前应用了中断 编写代码的更好方法
timer1.Start()
计时器不工作,因为代码中存在逻辑问题,因为计时器永远无法到达
if (Countername == 2)
{
Countername = 0;
}
因为在值重置为零之前应用了中断
编写代码的更好方法是
private void timer1_Tick(object sender, EventArgs e)
{
Countername++;
switch (Countername)
{
case 1:
PS3.SetMemory((0x01786718 + (uint)dataGridView1.CurrentRow.Index * 0x5808), new byte[] { 0x01 });//Go Prone
break;
case 2:
PS3.SetMemory((0x01786718 + (uint)dataGridView1.CurrentRow.Index * 0x5808), new byte[] { 0x00 });//Stand Up
if (Countername == 2)
Countername = 0;
break;
}
}
还有一件事需要注意:
如果由于某种原因,Countername>2的值
则不会进入任何开关块语句。ASystem.Windows.Forms.Timer
将定期勾选,直到您停止它。您是否确实设置了一个断点(或添加了一个断点)来确认计时器是否正在启动?或者可能是计时器周期性地启动,但您的代码运行不正常?我的计时器只工作一次,它不会像我希望的那样重复自己。在我的情况下,我做的是俯卧,站起来,但它不会再执行。是的,你已经说过了,而忽略了我刚才的要求。您确认没有再次调用该函数吗?或者你只是假设它不是,因为最终结果不是预期的?再次设置断点和/或添加调试打印。@在重置计数器变量值之前,您正在发出一个中断
,因此它只在第一次工作。我假设不会再次调用它,因为最终结果不是预期的,就像您所说的计时器一直到被告知停止为止,我从来没有叫它停下来。谢谢你:我明白了now@Wire很乐意帮忙:D!
private void timer1_Tick(object sender, EventArgs e)
{
Countername++;
switch (Countername)
{
case 1:
PS3.SetMemory((0x01786718 + (uint)dataGridView1.CurrentRow.Index * 0x5808), new byte[] { 0x01 });//Go Prone
break;
case 2:
PS3.SetMemory((0x01786718 + (uint)dataGridView1.CurrentRow.Index * 0x5808), new byte[] { 0x00 });//Stand Up
if (Countername == 2)
Countername = 0;
break;
}
}