2012-11-11 7 views
0

프리즘 응용 프로그램에서 모듈로 시작하는 로그인 양식을 만들었습니다. 사용자가 인증되면 모든 응용 프로그램 모듈에 대한 로그인 양식 대기가 초기화되고 (예 : 스플린 화면에로드 된 모듈에 대한 정보가 표시됨) 셸이 시작됩니다. 사용자가 로그인 양식의 취소 버튼을 클릭 할 때를 제외하고 모두 제대로 작동하는 것 같습니다. 나는 그 응용 프로그램 종료하지만, 로그인 양식을 다른 스레드에서 시작하기 때문에 나는 Application.Current.Shutdown()을 사용할 수 없습니다 (오직 Enviroment.Exit (0) 작업을하지만 이것은 확실하지 않습니다. 올바른 방법). Application.Current.Dispatcher에서 호출하려고하지만 응용 프로그램은 여전히 ​​실행됩니다. 이 로그인 모듈 초기화하고 내가 응용 프로그램 종료를해야 할 경우 잡을 여기서 어떤 도움이 감사응용 프로그램 종료 문제

을!

답변

0

로그인 UI가 백그라운드 스레드에서 실행되는 이유는 무엇입니까? 로그인 UI는 GUI 스레드에서 실행되어야합니다. 그런 다음 ProgressChanged 메서드가 GUI 스레드를 다시 호출 할 때마다 UI를 업데이트해야 할 때마다 ProgressChanged를 실행할 수있는 BackgroundWorker 개체 (위의 코드보다 훨씬 사용하기 쉽고 훨씬 유지 관리하기 쉽습니다)가 있습니까?

저는 종종 BackgroundWorker를 MyDataObjectBackgroundWorker와 같은 것으로 오버로드하고 객체를 보유하는 속성을 만듭니다. 이렇게하면 ProgressChanged를 사용하여 데이터를 쉽게 전달할 수 있습니다 (로드되는 모듈의 정보처럼).