2011-09-08 4 views
-2

어리석은 것처럼 들리지만 이런 일이 일어납니다.C# WinForms : 예상보다 많은 것을 실행하는 함수

기능을 활성화하고 작업을 수행 한 다음 작업을 마친 후 다시 활성화합니다. 즉,이 기능은 한 번이 아니라 두 번 활성화됩니다. 왜 디버깅을 시도했는지 알기 위해 노력했지만 이유를 찾지 못했습니다.

나는이 기능이 활성화 패널을 클릭

는 :

private void Play(object sender, EventArgs e) 
{ 
    Play0(MousePositionX, MousePositionY); 
    if (swich_player == true && AI_enabled == true) 
    { 
     AI_playing(); 
     swich_player = false; 
    } 
} 

전체 코드는 정말 깁니다.

정확하게 검색하지 않습니까? 다른 이유가 있습니까? 이 기능을 다시 시작하려면 무언가를 활성화해야합니다. 이 기능을 다시 활성화하는 것을 찾을 수 없습니다.

문제를 검색 할 수있는 곳이 있습니까? 아니면 문제가 무엇입니까?

편집 :

마침내 문제가 발견되었습니다. 패널의 속성을 변경하는 버튼 (button1)과 패널을 너비 0 픽셀 높이로 만드는 두 번째 버튼 (button2)이 있습니다 (보이지 않게하기 위해). 첫 번째 단추는 함수를 활성화하는 EventHandler를 추가합니다. 그러나 button2는 EventHandler를 제거하지 않습니다. 이렇게하면 button1을 누른 시간만큼 함수가 호출됩니다.

+2

뭐라구?! 어느 함수가 어떤 함수를 호출해야하는지 더 잘 설명 할 수 있습니까? 또는 위의 것을 재귀 적으로 만들고 싶습니까? 약간의 코드를 여러 번 실행하기를 원한다면 잠시 (사실적으로) 필요하지 않을까요? –

답변

1

이 함수를 여러 번 호출하는 소스는 찾고있는 것처럼 보입니다. 현재 코드 스 니펫을 사용하면 우리가 말할 수 없습니다. 하지만 당신이해야 할 일은 함수의 엔트리에 breakpoint를 두는 것입니다. 그러면 히트 할 때 Visual Studio의 "Call Stack"창을보십시오.

디버그를 통해 액세스 할 수 있습니다 -> 윈도우 -> (프로그램 실행시 실행하지 않는 경우는 윈도우에 표시되지 않습니다.) 스택 메뉴 항목을 호출 그런 다음 무엇인지 볼 수 있습니다

이 창을 통해 함수를 호출합니다. 매우 유용한 도구입니다.

사전 편집 : 귀하의 질문은 매우 명확하지 않다, 그러나 나는 (당신의 변수 이름에서) 생각이 지속적으로 실행하는 게임 루프를 찾고 있습니다. 그렇다면 this blog post을보고 게임 루프의 다양한 스타일에 대한 아주 좋은 정보를 얻으십시오. 단순한 루프부터 복잡한 루프 (확장 가능한 루프)까지 다양합니다.

당신이 뭔가를 한 번 활성화하면 "다시 활성화"하고 "이 기능을 다시 시작하려면 무언가 활성화해야합니다. 찾을 수 없습니다"라고 나와 있습니다. 이것들은 모순 된 진술처럼 보입니다. 조금 더 명확하게 질문을 편집 할 수 있습니까? 내 대답이 편집 후에 찾고자하는 것이 아니라면, 필자는 필요한 모든 것을 추가하기 위해 최선을 다할 것입니다.

+0

나는 질문을 편집했습니다.그러나 나는 이것이 나를 도울 수 있다고 생각하지 않는다 (그러나 그것은 미래에 유용하게 될지도 모른다). 한 번의 클릭으로 두 번 호출되는 함수가 왜 있는지 알고 싶습니다. 이 코드에는 프로그램에 그렇게하도록 지시하는 라인이나 함수를 다시 호출하는 라인이 없다. – AlexSavAlexandrov

+1

나는 더 잘 이해한다. 나는 원래의 질문에서 그것을 이해하지 못했다. "호출 스택"창을 디버깅하고 사용하여 개별 호출이 어디서 오는지 파악하십시오. – Kevek

+0

아니요. 나는 이것이 심지어 존재했다는 것을 몰랐다. 감사! – AlexSavAlexandrov

0

이 기능을 등록한 이벤트를 확인하십시오. 버튼의 "OnClick"에 등록하지 않은 경우 근본 원인이 될 수 있습니다.

+0

죄송합니다. 단추 속성 창에서 – AlexSavAlexandrov

+0

을 이해하지 못 했으므로 함수가 작성된 이벤트를 확인하십시오. 그것은 OnClick 이벤트이어야합니다 – NirMH

관련 문제