2011-11-21 3 views
1

내 WPF 응용 프로그램에서 새로운 UI 스레드를 시작하고 있습니다. 이제는이 스레드의 모든 창에 대해 목록을 얻는 방법을 찾고 있습니다. System.Windows.Application.Current.Windows을 사용하여 주 스레드에 대해 가져올 것입니다. .NET Framework에 무언가가 있습니까? 아니면 직접 구현해야합니까? 직접 구현해야 할 때 샘플 코드가 거의없는 사람이있을 것입니다.현재 스레드의 모든 창 목록보기

+0

왜 새로운 시작입니까? 스레드가? 그것은 단지 사물을 복잡하게 할 것입니다. –

+0

그건 긴 이야기입니다.하지만 꼭 필요합니다. 이제는 모두 멋지게 작동합니다.하지만 이제는 두 번째 UI 스레드에서 열리는 새 창에 대한 소유자로 설정할 창이 ​​열립니다. – BennoDual

+0

'Application.Current.Windows'는 ** EDIT **는 현재 스레드에 대해서만 윈도우를 리턴해야합니다. 각 스레드는 자체 응용 프로그램이 있어야합니다. (나는 체크하지 않았다) – SLaks

답변

2

MSDN 인용 :

창 참조가 즉시 자동으로 윈도우가 사용자 인터페이스 (UI) 스레드에서 인스턴스화로 Windows에 추가됩니다; 작업자 스레드가 만든 창은 추가되지 않습니다. Window 참조는 Closing 이벤트가 처리되고 Closed 이벤트가 발생하기 전에 자동으로 제거됩니다.

기본적으로 Windows 속성에 추가 된 첫 번째 항목은 MainWindow가됩니다.

이 속성은 Application 개체를 만든 스레드에서만 사용할 수 있습니다.

그래서 작업자 스레드에 의해 생성 된 창은 어떤 모음에서도 자동으로 보유되지 않습니다. 난 당신이 그 작업자 스레드에서 창을 만드는 것으로 가정합니다 - 그래서 나중에 액세스 할 수 있습니다 (당신은 나중에 창문에 this 일부 창 관리자 클래스에 추가하여 Windows 생성자에서 할 수있는 참조를 저장해야합니다)

관련 문제