选中复选框时C#程序崩溃

选中复选框时C#程序崩溃,c#,memory,cheat-engine,C#,Memory,Cheat Engine,我为一个游戏编写了一个作弊代码,但我想创建一个菜单,我就是这样做的。 如果选中该复选框,则执行while(checkbox.checked)。 所以我开始测试我的程序,由于某些原因,当我选中复选框时,我的程序崩溃了。 有人能帮我吗 namespace Hack { public partial class Form1 : Form { public Form1() { int PBase = 0x00509B74;

我为一个游戏编写了一个作弊代码,但我想创建一个菜单,我就是这样做的。 如果选中该复选框,则执行while(checkbox.checked)。 所以我开始测试我的程序,由于某些原因,当我选中复选框时,我的程序崩溃了。 有人能帮我吗

namespace Hack
{
    public partial class Form1 : Form
    {
        public Form1()

        {
            int PBase = 0x00509B74;
            int Health = 0xf8;
            int mgammo = 0x150;

            VAMemory vam = new VAMemory("ac_client");
            int localplayer = vam.ReadInt32((IntPtr)PBase);
            {

            }

            InitializeComponent();


        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
                while (checkBox1.Checked)
            {
            int PBase = 0x00509B74;
            int Health = 0xf8;

            VAMemory vam = new VAMemory("ac_client");
            int localplayer = vam.ReadInt32((IntPtr)PBase);
            {
                int address = localplayer + Health;
                vam.WriteInt32((IntPtr)address, 1337);
            }
                Thread.Sleep(200);
            }
        }
    }
}

IzzyMichiel

您的代码在
复选框1\u CheckedChanged
事件处理程序中出现死锁。UI线程被困在事件处理程序中,因此无法为任何其他事件提供服务。当这种情况发生时,Windows最终会显示“此程序已停止响应”消息

与许多其他死锁一样,解决方案只是在新线程上进行处理。处理此问题的最简单方法是生成一个线程池线程来为您执行处理工作

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox1.Checked)
    {
        ThreadPool.QueueUserWorkItem((state) =>
        {
            while (checkBox1.Checked)
            {
                // ...
            }
        });
    }
}

事件处理程序最终需要退出,否则将无法处理其他事件(例如取消选中复选框)。事件处理程序永远不会退出,因为
复选框。选中的
将永远不会更改。不要将代码显示为图片。请编辑您的问题,将其替换为从IDE剪切和粘贴的代码。完成后,选择它并按Ctrl-K将其格式化为代码块。