Dispatcher.VerifyAccess Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Determina se il thread chiamante ha accesso a Dispatcher.
public:
void VerifyAccess();
public void VerifyAccess ();
member this.VerifyAccess : unit -> unit
Public Sub VerifyAccess ()
Eccezioni
Il thread chiamante non ha accesso a Dispatcher.
Esempio
Nell'esempio seguente viene VerifyAccess usato per determinare se un thread ha accesso al thread in cui è stato creato un oggetto Button . Il metodo accetta un oggetto come argomento, che viene sottoposto a cast a un oggetto Button. Il VerifyAccess metodo sull'oggetto Dispatcher Button di viene chiamato per verificare l'accesso al thread.
Se il thread chiamante ha accesso a , l'oggetto DispatcherButton viene aggiornato semplicemente accedendo ai membri di Button.
Se il thread chiamante non ha accesso, viene generata un'eccezione InvalidOperationException . In questo esempio viene rilevata l'eccezione e viene eseguito il push di un delegato, che accetta un Button oggetto come argomento, nell'oggetto Dispatcher Buttondi . In questo Dispatcher modo verrà eseguita l'operazione di aggiornamento di 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);
}
}
}
' Uses the Dispatcher.VerifyAccess method to determine if
' the calling thread has access to the thread the UI object is on.
Private Sub TryToUpdateButtonVerifyAccess(ByVal uiObject As Object)
Dim theButton As Button = TryCast(uiObject, Button)
If theButton IsNot Nothing Then
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 e As InvalidOperationException
' Exception Error Message.
MessageBox.Show("Exception ToString: " & vbLf & vbLf & 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(AddressOf UpdateButtonUI), theButton)
End Try
End If
End Sub
Commenti
Solo il thread Dispatcher in cui viene creato può accedere a Dispatcher.
Questo metodo è pubblico; pertanto, qualsiasi thread può verificare se ha accesso a Dispatcher.
La differenza tra CheckAccess e VerifyAccess restituisce CheckAccess un valore booleano se il thread chiamante non ha accesso a Dispatcher e VerifyAccess genera un'eccezione.