2011-09-26 7 views
7

Dispatcher.BeginInvoke()는 UI 스레드에서 일부 코드를 실행하는 데 사용됩니다. 최근에 'Deployment'클래스를 사용하여 Dispatcher 인스턴스를 얻는 또 다른 방법입니다. 나는 this.Dispatcher.BeginInvoke()Deployment.Current.Dispatcher.BeginInvoke() 기능?, 그리고Silverlight에서 this.Dispatcher.BeginInvoke() 및 Deployment.Current.Dispatcher.BeginInvoke() 메서드의 차이점

사용해야합니까의 invokation 사이 디퍼 런스 세라마이드가 있습니까

을 알고 싶습니다 this.Dispatcher.BeginInvoke()Deployment.Current.Dispatcher.BeginInvoke()?

감사 알렉스

답변

11

짧은 답변 : 그들은 실버 라이트 같은, 그래서 (코드의 맥락에서 사용 가능한 경우) 짧은 하나를 사용하십시오.

this.Dispatcher.BeginInvoke() 해당 컨트롤이 실행중인 스레드에서 실행되는지 확인합니다.

Deployment.Current.Dispatcher.BeginInvoke()이 기본 UI 스레드에서 실행되는지 확인합니다.

2 개는 항상 Silverlight에서 동일하며 (추가 UI 스레드를 만들지 않는 한 일반적으로 WPF에서도 동일 함) 현재 컨텍스트에 디스패처가없는 경우 this.Dispatcher.BeginInvoke()을 사용하고 대신 글로벌 하나를 사용하십시오

+0

어떤 상황에서 동일하지 않습니까? – AnthonyWJones

+0

@AnthonyWJones : Dispatcher.Current는 코드를 실행중인 스레드와 관련된 디스패치 객체를 검색합니다. 서로 다른 스레드에서 호출 될 때 서로 같지 않습니다. – Will

+0

@Will : Deployment.Current 또는 Dispatcher.Current를 의미 했습니까? – wizzardz