2012-12-12 7 views
1

Windows 응용 프로그램을 POS 시스템으로 빌드하고 사용자가 창에 새 단추를 추가 할 수 있도록하는 기능을 추가하려고합니다. 따라서 항목 이름 및 가격과 같은 사용자 입력 정보가 ​​있으면 응용 프로그램에서 새 단추를 만들고이 코드를 MainForm.cs 및 MainForm.Designer.cs에 추가하는 코드를 생성합니다.실행중인 Windows 응용 프로그램을 다시 작성하는 방법

그러나 응용 프로그램을 중지하고 컴파일 된 exe를 다시 실행해야 소스 코드의 변경 사항이 적용됩니다. 응용 프로그램이 실행 중일 때 응용 프로그램 자체를 다시 만들 수 있습니까? (즉, 사용자는 정보를 입력 한 직후에 창에 새 버튼이 표시되는 것을 볼 수 있습니다.)

나는 Application.Restart()를 사용해 보았습니다. 그리고 이것. 리프레쉬();하지만 작동하지 않았습니다.

+1

Daniel Hilgarth가 "당신의 접근 방식이 잘못되었습니다"라는 정답을 갖고 있다고 생각합니다. 사물이 명백하지 않다는 것을 알게되면 종종 의도하지 않은 것을하고 있음을 의미합니다. 사용자가하고있는 것을 기반으로 코드 등을 다시 컴파일하고 싶지는 않을 것입니다. – Belogix

답변

6

올바른 방법을 사용하고 있지 않습니다.

사용자 입력을 기반으로 응용 프로그램의 코드를 수정하면 안됩니다.
대신 사용자가 입력 한 데이터를 데이터베이스 또는 파일에 저장하고이 정보를 사용하여 단추를 동적으로 표시하십시오.

+0

감사. 또한 디버그없이 응용 프로그램을 실행하면 심각한 오류가 발생할 수 있습니다. 이것은 데이터베이스와 연결하지 않고 연습하는 것입니다. 버튼을 동적으로 표시하는 방법을 찾는 것이 더 좋습니다. – Verity

0

이것이 가능하다고 생각하지만 제한이 있습니다. AppDomain을 만들고 dll 코드 (이 dll에는 응용 프로그램 양식 포함)를로드 할 수 있습니다. 그런 다음 앱 도메인을 언로드하고 DLL을 작성한 다음 새 AppDomain을 다시 만듭니다.

당연히, 당신은 당신이있는 창을 닫고 DLL 아키텍처가 단순한 WinForms 응용 프로그램과 완전히 다르지 않아야합니다.

내가 한마디로 예를

+0

꽤 복잡하게 들리지만 감사합니다. – Verity

0

에 대한 자동 업데이트를 추천 할 것입니다 물건의 종류, 아니오 - 응용 프로그램을 다시 작성하는 것은 일반적으로 실행중인 프로세스에 의해 잠겨에 디스크의 실행 이미지 파일을 대체하지 않기 때문에 .

Visual Studio 및 다른 IDE는 프로그램이 중단 점에서 대기하는 동안 런타임에 코드를 대체 할 수있는 "편집 및 계속"을 지원하지만 제한된 수의 경우에만 (예 : 기존 방법의 코드 수정). 도매 기능이나 GUI 변경에 충분히 유연하지 않습니다 (XAML 리소스를 사용하는 경우에는 불가능합니다).

유연성을 원하는 경우 이러한 기능을 지원하는 구형 메인 프레임 스타일 시스템 (예 : IBM Z 시리즈)을 깊이 파고 들어야합니다. .