(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Dispatcher.VerifyAccess-Methode

Bestimmt, ob der aufrufende Thread auf dieses Dispatcher zugreifen kann.

Namespace:  System.Windows.Threading
Assembly:  WindowsBase (in WindowsBase.dll)
public void VerifyAccess()
AusnahmeBedingung
InvalidOperationException

Der aufrufende Thread kann nicht auf diesen Dispatcher zugreifen.

Nur der Thread, in dem der Dispatcher erstellt wurde, kann auf den Dispatcher zugreifen.

Diese Methode ist öffentlich. Jeder Thread kann überprüfen, ob er auf den Dispatcher zugreifen kann.

Der Unterschied zwischen CheckAccess und VerifyAccess besteht darin, dass CheckAccess einen booleschen Wert zurückgibt, wenn der aufrufende Thread nicht auf den Dispatcher zugreifen kann. VerifyAccess hingegen löst eine Ausnahme aus.

Im folgenden Beispiel wird mit VerifyAccess ermittelt, ob ein Thread auf den Thread zugreifen kann, in dem ein Button erstellt wurde. Die Methode erwartet ein Objekt als Argument, das in einen Button umgewandelt wird. Die VerifyAccess-Methode des Dispatcher für den Button wird aufgerufen, um den Zugriff auf den Thread zu überprüfen.

Wenn der aufrufende Thread auf den Dispatcher zugreifen kann, wird Button durch einen einfachen Zugriff auf die Member des Button aktualisiert.

Wenn der aufrufende Thread nicht über Zugriff verfügt, wird eine InvalidOperationException ausgelöst. In diesem Beispiel wird die Ausnahme abgefangen und ein Delegat, der einen Button als Argument erwartet, im Dispatcher des Button abgelegt. Dieser Dispatcher übernimmt die Aktualisierung des Button.


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

    if (theButton != null)
    {
        try
        {   
            // Check if this thread has access to this object.
            theButton.Dispatcher.VerifyAccess();

            // The thread has access to the object, so update the UI.
            UpdateButtonUI(theButton);
        }

        // Cannot access objects on the thread.
        catch (InvalidOperationException e)
        {
            // Exception Error Message.
            MessageBox.Show("Exception ToString: \n\n" + e.ToString(), 
                "Execption Caught! Thrown During AccessVerify().");

            MessageBox.Show("Pushing job onto UI Thread Dispatcher");

            // Placing job onto the Dispatcher of the UI Thread.
            theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                new UpdateUIDelegate(UpdateButtonUI), theButton);
        }
    }
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.