발송인.현재 디스패처 대어플.현재의.파견자
사이의 차이점은 무엇입니까?Dispatcher.CurrentDispatcher
(에)System.Windows.Threading
) 및Application.Current.Dispatcher
(에)System.Windows
)?
내 직감으로는Application.Current.Dispatcher
변경되지 않으며 현재 응용 프로그램의 모든 스레드에 대해 글로벌합니다.Dispatcher.CurrentDispatcher
의 새 인스턴스를 생성할 수 있습니다.Dispatcher
호출된 스레드에 따라 다릅니다.
그것이 맞습니까?
만약 그렇다면, 그것의 목적은?Dispatcher.CurrentDispatcher
주로 멀티스레드 UI용입니까?
내 직감은 그 애플리케이션을 말해줍니다.현재의.디스패처는 변경되지 않으며 현재 응용프로그램의 모든 스레드에 대해 전역적입니다.CurrentDispatcher는 호출된 스레드에 따라 Dispatcher의 새 인스턴스를 만들 수 있습니다.
그것이 맞아요.
게다가, 에 액세스하는 것은 아무런 의미가 없습니다.Dispatcher.CurrentDispatcher
사용자 인터페이스가 아닌 스레드에서.호출하지 않으면 아무 것도 할 수 없으며 무한 메시지 루프에 들어가는 것은 작업자 스레드 내에서 원하는 것이 아닙니다.
그래서:
앱에 UI 스레드가 하나만 있는 가장 일반적인 시나리오에서는
Application.Current.Dispatcher
그리고.Dispatcher.CurrentDispatcher
UI 스레드 내에서 동일한 인스턴스를 반환합니다.어떤 것을 사용하는지는 단순히 선호도의 문제입니다.앱에 두 개 이상의 UI 스레드가 있는 경우 각 스레드는 구성 시 생성된 UI 스레드의 디스패처와 영구적으로 연결됩니다.이 경우에는,
Application.Current.Dispatcher
응용 프로그램이 생성한 스레드의 디스패처를 참조합니다. 이를 사용하여 다른 UI 스레드가 소유한 컨트롤에 메시지를 게시할 수 없습니다.
간단히 말하면...
Dispatcher.CurrentDispatcher
현재 스레드에 대한 디스패처를 가져옵니다.따라서 백그라운드 프로세스에서 UI 스레드의 Dispatcher를 찾는 경우에는 이 기능을 사용하지 마십시오.
Application.Current.Dispatcher
UI 스레드의 디스패처는 유일한 응용 프로그램 인스턴스를 회전시키는 스레드이기 때문에 항상 제공됩니다.
내 직감은 그 애플리케이션을 말해줍니다.현재의.디스패처는 변경되지 않으며 현재 응용프로그램의 모든 스레드에 대해 전역적입니다.CurrentDispatcher는 호출된 스레드에 따라 Dispatcher의 새 인스턴스를 만들 수 있습니다.
맞아요, 그.Application.Current.Dispatcher
현재 스레드의 디스패처로 구성될 때 할당되는 응용 프로그램의 인스턴스 속성입니다.그리고 다음의 문서로서.Dispatcher.CurrentDispatcher
지적 사항:
현재 실행 중인 스레드에 대한 디스패처를 가져오고 새 디스패처가 스레드와 아직 연결되지 않은 경우 새 디스패처를 만듭니다.
만약 그렇다면, 디스패처의 목적입니다.멀티스레드 UI를 위한 현재 디스패처는 주로 무엇입니까?
일반적으로 백그라운드 스레드의 디스패처에 속한 UI 요소가 없기 때문에 작업을 디스패처할 수 없습니다.
언급URL : https://stackoverflow.com/questions/10448987/dispatcher-currentdispatcher-vs-application-current-dispatcher
'programing' 카테고리의 다른 글
Azure 기능이 로컬 환경에서 실행되는지 확인하는 방법은 무엇입니까?Azure 함수에서 역할 환경이 작동하지 않습니다. (0) | 2023.04.28 |
---|---|
System.지원되지 않음자산을 생성하려고 할 때 예외 발생 (0) | 2023.04.28 |
커밋 메시지를 변경하지 않고 커밋 메시지를 수정하는 방법(이전 메시지 재사용) (0) | 2023.04.28 |
Azure에서 LocalDb MDF 파일 사용 (0) | 2023.04.28 |
MavenArchiver.getManifest()의 m2e 오류 (0) | 2023.04.28 |