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

C# program crashing when checking checkbox

我编写了一个游戏作弊代码,但我想创建一个菜单,我是这样做的。 如果复选框被选中,则执行 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);
            }
        }
    }
}

伊兹米歇尔

您的代码在 checkBox1_CheckedChanged 事件处理程序中出现死锁。 UI 线程被困在事件处理程序中,因此它无法为任何其他事件提供服务。发生这种情况时,Windows 最终会发布 "This program has stopped responding" 消息。

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

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