-1

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

伊兹米歇尔

4

1 回答 1

0

您的代码在checkBox1_CheckedChanged事件处理程序中存在死锁。UI 线程被困在事件处理程序中,因此它不能为任何其他事件提供服务。发生这种情况时,Windows 最终会显示“此程序已停止响应”消息。

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

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox1.Checked)
    {
        ThreadPool.QueueUserWorkItem((state) =>
        {
            while (checkBox1.Checked)
            {
                // ...
            }
        });
    }
}
于 2017-02-12T12:51:24.277 回答