这听起来很愚蠢,但这种情况发生在我身上。
我激活了一个函数,它完成了它的工作,并在它完成后再次启用它。换句话说,该功能激活两次,而不是一次。我试图通过调试找出原因,但我找不到原因。
当我点击面板时,此功能会激活:
private void Play(object sender, EventArgs e)
{
Play0(MousePositionX, MousePositionY);
if (swich_player == true && AI_enabled == true)
{
AI_playing();
swich_player = false;
}
}
整个代码真的很长。
我没有正确搜索吗?还有其他原因吗?为了让这个功能再次启动,必须激活它。我找不到再次激活该功能的内容。
有什么建议,在哪里搜索问题?或者问题是什么?
编辑:
我终于找到了问题。有一个按钮(button1)可以改变面板的属性,还有一个按钮(button2)使面板宽0像素,高0像素(为了使其不可见)。第一个按钮还添加了一个激活该功能的EventHandler。但button2不会删除EventHandler。这样,函数被调用的次数与我按下button1的时间一样多。
答案 0 :(得分:1)
看起来你正在寻找的东西(通过你的评论/编辑)是多次调用此函数的来源。使用当前的代码片段,我们无法分辨。但是你应该做的是在函数的入口处放置一个断点,然后当它被命中时,查看visual studio中的“调用堆栈”窗口。
这可以通过Debug - >访问。 Windows - >调用堆栈菜单项(运行程序时。如果您没有运行,它将不会显示在Windows中)
然后,您可以通过此窗口查看正在调用您的功能的内容。这是一个非常有用的工具。
预编辑: 你的问题不是很清楚,但我认为(从你的变量名称)你正在寻找一个将继续运行的游戏循环。如果是这样,请查看this blog post,其中包含有关不同风格游戏循环的非常好的信息。它的范围从简单到更复杂(和可扩展)的循环。
你的问题表明你曾经激活一次并且“再次启用”,并且“为了让这个功能重新开始,必须要激活它。我找不到什么”。这些似乎是矛盾的陈述。你能编辑一下你的问题吗?如果我的答案不是您在编辑后所寻找的答案,我将尽我所能添加任何需要的内容。
答案 1 :(得分:0)
检查您注册此功能的事件。如果您注册了该按钮没有“OnClick”的内容,则可能是根本原因