Dispatcher.CheckAccess 方法

定义

确定调用线程是否为与此 Dispatcher 关联的线程。

C#
public bool CheckAccess();

返回

如果调用线程是与此 Dispatcher 关联的线程,则为 true;否则为 false

示例

以下示例使用 CheckAccess 确定线程是否有权访问 ButtonCheckAccess调用与 Button 关联的 上的 Dispatcher 方法以验证对线程的访问。 如果调用线程有权访问 DispatcherButton 则通过访问 的成员 Button来更新 ;否则,接受 Button 作为参数的委托将放在 上 Dispatcher。 将 Dispatcher 委托更新 的工作 Button

C#
// Uses the Dispatcher.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.Dispatcher.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.
            // Place the update method on the Dispatcher of the UI thread.
            theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                new UpdateUIDelegate(UpdateButtonUI), theButton);
        }
    }
}

注解

Dispatcher DispatcherObject只有创建 上的 可以访问 对象。 使用 InvokeBeginInvoke 从其他线程访问 对象。

CheckAccess 可以从任何线程调用。

VerifyAccess 之间的CheckAccessCheckAccess差返回一个布尔值,指示调用线程是否有权访问 DispatcherVerifyAccess引发异常。

适用于

产品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另请参阅