C# 重新启动计时器

C# 重新启动计时器,c#,datagridview,timer,C#,Datagridview,Timer,我正在从事一个C#项目,在代码方面遇到了一些问题(见下文)。当我运行项目时,Timer Tick事件似乎会重复自身,它只是做注释所表示的事情,我倾向于,然后我站起来,我希望它重复自身,所以我不断地站起来并倾向于,是的,在datagridview“on”选择中我有timer1.Start() 计时器不工作,因为代码中存在逻辑问题,因为计时器永远无法到达 if (Countername == 2) { Countername = 0; } 因为在值重置为零之前应用了中断 编写代码的更好方法

我正在从事一个C#项目,在代码方面遇到了一些问题(见下文)。当我运行项目时,Timer Tick事件似乎会重复自身,它只是做注释所表示的事情,我倾向于,然后我站起来,我希望它重复自身,所以我不断地站起来并倾向于,是的,在datagridview“on”选择中我有
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的值
则不会进入任何开关块语句。

A
System.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;
    }
}