2012-01-04 4 views
0

WPF 응용 프로그램을 시작하는 AppDomain.ExecuteAssembly 호출의 일부로 전달 된 명령 줄 인수에 액세스하는 명확한 방법이 있습니까?별도의 appdomain에 WPF 응용 프로그램에 대한 명령 줄 인수에 액세스

AppDomain moduleDomain = AppDomain.CreateDomain("Friendly Name"); 
moduleDomain.ExecuteAssembly(path, new[] { "arg1", "arg2" }); 

이러한 인수에 액세스 할 work-around을있다, 모두 Environment.GetCommandLineArgs() 이후 및 명령 줄 인수를 반환 StartupEventArgs : 나는 별도의 응용 프로그램 도메인에서 WPF 응용 프로그램을 회전 등과 같은 응용 프로그램에 인수를 전달하고있어

원래 응용 프로그램의 경우 ExecuteAssembly()를 사용하여 스핀 된 응용 프로그램이 아닙니다.

Main 메서드를 수동으로 정의하지 않고도 StartupEventArgs를 사용하여 WPF 응용 프로그램에 전달 된 인수에 액세스하고 싶습니다. 그렇게 할 방법이 있습니까?

별도의 프로세스에서 WPF 응용 프로그램을 시작하면 작동하지만 성능이 저하되고 디버깅이 복잡해집니다.

+1

커맨드 라인 인자가 단지'string'이고 그것들이 변경 가능하지 않다는 것을 생각해 보면, 그것을'string' 속성 안에 넣고 그 속성의 값을 전달하는 것이 어떻겠습니까? 서로 다른 도메인간에 문자열을 전달할 수 있습니까? 맞는 것 같아요. – Tigran

+1

감사합니다. Tigran, AppDomain.SetData를 사용하여 만족 스럽습니다. 시스템에서 8 시간 동안 답변을 게시 할 수 없지만 최대한 빨리 전체 솔루션을 게시합니다. – Caleb

답변

2

Tigran의 주석은 명령 줄 인수 대신 AppDomain.SetData을 사용하여 만족스러운 해결책을 제시합니다. 기본 개요는 다음과 같습니다

다음
AppDomain moduleDomain = AppDomain.CreateDomain("Friendly Name"); 
moduleDomain.SetData("arg1", "arg1Value"); 
moduleDomain.SetData("arg2", "arg2Value"); 
moduleDomain.ExecuteAssembly(path); 

의 WPF 응용 프로그램에서 '인수'에 액세스 할 : 이것은 내 사용 사례에서 잘 작동

string arg1Value = AppDomain.CurrentDomain.GetData("arg1"); 
string arg2Value = AppDomain.CurrentDomain.GetData("arg2"); 

.

관련 문제