문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

DependencyObject.CheckAccess 메서드

Silverlight

호출 스레드에서 이 개체에 액세스할 수 있는지 여부를 확인합니다.

네임스페이스:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)

[EditorBrowsableAttribute(EditorBrowsableState.Never)]
public bool CheckAccess()

반환 값

형식: System.Boolean
호출 스레드에서 이 개체에 액세스할 수 있으면 true이고, 그렇지 않으면 false입니다.

CheckAccess DependencyObject를 얻은 스레딩 컨텍스트가 DependencyObject를 만들고 있던 스레드와 같은지 여부를 결정하는 유틸리티 메서드입니다.

  • 같은 스레드인 경우 CheckAccesstrue를 반환합니다. 해당 DependencyObject에 대한 작업을 수행할 수 있습니다. 여기에는 속성 설정, 메서드 호출 등을 포함할 수 있습니다.

  • 현재 스레딩 컨텍스트가 만들고 있는 스레드가 아닌 경우 CheckAccessfalse를 반환합니다. DependencyObject 에서 값을 변경하려고 작업을 수행하는 거의 모든 시도에서 이 예외가 발생합니다. 그러나 해당 DependencyObject에서 Dispatcher 값을 검색하고 Dispatcher API를 사용하여 작업을 호출할 수 있습니다. 자세한 내용은 Dispatcher관리되는 스레딩 개요을 참조하십시오.

모든 스레드는 특정 DependencyObject에 액세스할 수 있는지 여부를 확인할 수 있습니다.

CheckAccess false를 반환하는 경우 일반적으로 주 UI 스레드가 아닌 스레드 컨텍스트에서 주 UI 스레드의 DependencyObject에 액세스를 시도하고 있다는 의미입니다.

BackgroundWorker 는 주 UI 스레드를 사용하지 않는 작업을 수행하는 스레드를 위임할 수 있는 옵션입니다.

다음 코드 예제에서는 이 메서드를 사용하여 UI 스레드에서 DependencyObject에 대해 작업을 수행할 수 있는지 여부를 확인하고 CheckAccessfalse를 반환하는 경우에 BeginInvoke를 사용하는 방법을 보여줍니다.


private delegate void AddTextDelegate(Panel p, String text);

private void AddText(Panel p, String text)
{
    p.Children.Clear();
    p.Children.Add(new TextBlock { Text = text });
}

private void TestBeginInvokeWithParameters(Panel p)
{
    if (p.Dispatcher.CheckAccess()) AddText(p, "Added directly.");
    else p.Dispatcher.BeginInvoke(
        new AddTextDelegate(AddText), p, "Added by Dispatcher.");
}


Silverlight

5, 4, 3에서 지원

Windows Phone용 Silverlight

Windows Phone OS 7.1, Windows Phone OS 7.0에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

커뮤니티 추가 항목

추가
표시: