2012-05-30 8 views
0

전체 메서드가 실행되기 전에 단추를 클릭하면 단추가 전체 내용을 다시 설정해야합니다. 그래서 내가 Application.Restart();을 사용하면 응용 프로그램을 다시 시작하지만 나머지는 실행하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 응용 프로그램을 다시 시작해야하는 이유는 너무 많은 변수가있어서 모든 변수를 재설정하려고하기 때문입니다. 이 재설정 프로세스는 특정 버튼을 클릭하여 수행해야합니다. 그러나이 버튼은 함수의 힙을 가지고있어이 메소드의 어느 곳에서나 Application.Restart(); 메소드를 실행합니다. 이 메서드는 실행되지 않습니다. 그래서 기본적으로 나는이 방법은 모든 변수를 다시 시작하고 (enableButtons();부터) 나머지를 실행종료하고 다시로드하지 않고 응용 프로그램을 다시 시작하는 방법은 무엇입니까?

private void puzzleToolStripMenuItem_Click(object sender, EventArgs e) { 
     Application.Restart(); 
     enableButtons(); 
     puzzleDataMethod(); 
     MessageBox.Show... 
+1

왜 앱을 다시 시작 하시겠습니까? – Reniuz

+0

당신이 "버튼을 클릭하기 전에 버튼을 클릭하면 전체 메소드가 실행됩니다." – Shai

+0

@Renuiz와 Shai는 더 많은 것을 설명했습니다 –

답변

1

당신은 하나 개의 컨테이너로 모든 변수를 이동해야합니다. 응용 프로그램을 다시 시작해야 할 때 다시 초기화합니다.

+0

나에게 주어진 UML 디자인에 따라이 애플리케이션을 수행해야하므로이 작업을 수행 할 수 없습니다. –

+1

어떤 이유로 든 할 수 없다면. 모든 변수를 수동으로 재설정해야합니다. 응용 프로그램이 UML 디자인을 둘러싼 더 위험한 parctice라고 생각합니다. –

+0

잠재적 인 결함이나 개선점이있을 때 디자인에 대한 적응을 제안하는 이유는 무엇입니까? –

0

정말 그렇게 할 수 없습니다. 유일한 조치 과정은 다시 시작한 후 다시 가져 오려는 상태를 디스크에 유지하고 Application.Restart()이 메소드의 마지막 호출인지 확인하는 것입니다.

격리 된 저장소의 파일에서 true/false 플래그를 설정하는 것만 큼 간단 할 수도 있습니다.이 플래그는 다시 시작한 결과로 시작하는 앱의 새 인스턴스를 알려주므로 현재 시도중인 명령을 실행할 수 있습니다 Application.Restart()으로 전화를 걸어보세요.

관련 문제