Search code examples
c#loopsintervals

Loop in C# with a checkBox and intervals


I would like that when I check the checkBox1 this code is repeated until the checkBox1 is unchecked:

                MemLib.WriteMemory("base+02DB12E8", "float", "500");
                MemLib.WriteMemory("base+025EBA28", "int", "1");
                Thread.Sleep(1000);
                MemLib.WriteMemory("base+025EBA28", "int", "0");
                Thread.Sleep(1000);

And here is the code to execute when checkBox1 is unchecked:

                MemLib.WriteMemory("base+02DB12E8", "float", "500");
                MemLib.WriteMemory("base+025EBA28", "int", "0");

And this is what I did:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        while (true)
        {
            if (checkBox1.Checked)
            {
                MemLib.WriteMemory("base+02DB12E8", "float", "500");
                MemLib.WriteMemory("base+025EBA28", "int", "1");
                Thread.Sleep(1000);
                MemLib.WriteMemory("base+025EBA28", "int", "0");
                Thread.Sleep(1000);
            }
            else
            {
                MemLib.WriteMemory("base+02DB12E8", "float", "500");
                MemLib.WriteMemory("base+025EBA28", "int", "0");
            }
        }
    }

Anyone got a solution?


Solution

  • You can use a timer. Something like this:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Checked)
        {
            Timer1.Interval = 1000;
            Timer1.Enabled = true;
        }
    }
    
    private void Timer1_Tick(object Sender, EventArgs e)
    {
        if (checkBox1.Checked)
        {
            MemLib.WriteMemory("base+02DB12E8", "float", "500");
            MemLib.WriteMemory("base+025EBA28", "int", "1");
            Thread.Sleep(1000);
            MemLib.WriteMemory("base+025EBA28", "int", "0");
            Thread.Sleep(1000);
        }
        else
        {
            MemLib.WriteMemory("base+02DB12E8", "float", "500");
            MemLib.WriteMemory("base+025EBA28", "int", "0");
        }
    }
    

    https://learn.microsoft.com/en-us/dotnet/desktop/winforms/controls/run-procedures-at-set-intervals-with-wf-timer-component?view=netframeworkdesktop-4.8