Поделиться через


DispatcherObject.CheckAccess Метод

Определение

Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.

public:
 bool CheckAccess();
public bool CheckAccess ();
member this.CheckAccess : unit -> bool
Public Function CheckAccess () As Boolean

Возвращаемое значение

true, если вызывающий поток имеет доступ к этому объекту; в противном случае — false.

Примеры

В следующем примере используется CheckAccess для определения того, имеет ли поток доступ к потоку, в котором Button был создан объект . Метод CheckAccess в Button вызывается для проверки доступа к потоку. Если у вызывающего потока есть доступ, Button объект обновляется путем простого доступа к членам ; в Buttonпротивном случае делегат, принимаюющий Button в качестве аргумента, размещается в элементе DispatcherButton.

// Uses the DispatcherObject.CheckAccess method to determine if 
// the calling thread has access to the thread the UI object is on
private void TryToUpdateButtonCheckAccess(object uiObject)
{
    Button theButton = uiObject as Button;

    if (theButton != null)
    {
        // Checking if this thread has access to the object
        if(theButton.CheckAccess())
        {
            // This thread has access so it can update the UI thread
            UpdateButtonUI(theButton);
        }
        else
        {
            // This thread does not have access to the UI thread
            // Pushing update method on the Dispatcher of the UI thread
            theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                new UpdateUIDelegate(UpdateButtonUI), theButton);
        }
    }
}
' Uses the DispatcherObject.CheckAccess method to determine if 
' the calling thread has access to the thread the UI object is on
Private Sub TryToUpdateButtonCheckAccess(ByVal uiObject As Object)
    Dim theButton As Button = TryCast(uiObject, Button)

    If theButton IsNot Nothing Then
        ' Checking if this thread has access to the object
        If theButton.CheckAccess() Then
            ' This thread has access so it can update the UI thread
            UpdateButtonUI(theButton)
        Else
            ' This thread does not have access to the UI thread
            ' Pushing update method on the Dispatcher of the UI thread
            theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New UpdateUIDelegate(AddressOf UpdateButtonUI), theButton)
        End If
    End If
End Sub

Комментарии

Доступ к объекту может получить только поток Dispatcher , созданный в DispatcherObject.

Любой поток может проверить, имеет ли он доступ к этому DispatcherObject.

Разница между CheckAccess и VerifyAccess заключается в том, что CheckAccess возвращает логическое значение, указывающее, имеет ли вызывающий поток доступ к этому DispatcherObject объекту, и VerifyAccess создает исключение, если вызывающий поток не имеет доступа к этому DispatcherObjectобъекту .

Вызов этого метода идентичен вызову CheckAccess связанного Dispatcher объекта.

Применяется к