올바른 명령 줄 인수가 전달되지 않을 때 UI를 표시하는 프로젝트가 있습니다. 그것은 바탕 화면 배경 화면을 동적으로 업데이 트하기 위해 만들어진 간단한 유틸리티입니다. 업데이트가 완료되면Application.Run이 완료되기 전에 .NET 응용 프로그램을 삭제하십시오.
this.Dispose();
으로 전화를 걸지만 명령 줄 인수가 전달되면 문제가 발생합니다. 이 폼은 실제로 사용자에게 표시되기 전에 Dispose 메서드 호출을 얻습니다. 그 결과, 필자가 원했던 것처럼 프로그램이 제대로 작동하지 않는다는 불쾌한 오류가 발생합니다.
나는이 점에 대해 매우 논리적이지 않다는 것을 존중할 수 있지만 해결책을 찾기위한 다른 방법은 없습니다. 응용 프로그램이 오류를 일으키지 않고로드되기 전에 Dispose() 메서드를 깨끗하게 호출하는 다른 방법이 있습니까?
추가 정보 :
은 위의 evidentially 명확하지 않다 나는 그 드려 죄송합니다. 내 프로그램은 Program.cs 파일에서 시작됩니다 : 생성자에서
Application.Run(new MainForm());
나는 명령 줄 인수가 존재하는지 확인하고 너무 SilentRun라는 루틴을 호출합니다. 이 private 메서드는 인수가 유효한지 확인한 다음 인수가 BrandSystem()이라는 작업을 커밋하기위한 메서드에 전달하는지 확인합니다.
BrandSystem 후는() 할 실제로 할 수있는 응용 프로그램에 대해 다른 아무것도 없기 때문에 그 일에, 마지막 문장은
this.Dispose();
입니다 완료됩니다. 명령 인수가 전달되지 않고 사용자가 GUI를 사용하여 변경 사항을 적용하면이 동일한 메소드가 호출됩니다. 기본적으로 벽지를 업데이트하는 프로세스가 완료되면 응용 프로그램이 종료되기를 원합니다.
명령 줄 인수의 이유는이 정렬 유틸리티를 설치 패키지에 추가하고 백그라운드에서 자동으로 실행할 수 있기 때문입니다. 설치 과정에 바탕 화면을 업데이트 할 수있는 기본 기능이 없으며이 기능은 나를위한 두 가지 새 기능입니다.
프로그램이 명령 줄 모드에서 실행되고 모든 것이 실제로로드되기 전에 Dispose를 호출하면 문제가 발생합니다. 내 논리가 완전히 불건전하다는 것을 증명하더라도 제안에 대해서는 개방적입니다.
매우 명확하지 않다면 스 니펫은 쓸모가 없습니다. 어쨌든 프로그램이 종료 될 때 무엇을 처분해야합니까? –
@ 한자 Passant - 설명을 위해 업데이트를 참조하십시오. 내가 너무 애매하다는 것을 지적 해 주셔서 감사합니다. – Jeff
방금 * 모든 * 프로그램에있는 코드 스 니펫을 추가했습니다. –