Dispatcher.PushFrame(DispatcherFrame) Methode

Definitie

Voert een execute-lus in.

public:
 static void PushFrame(System::Windows::Threading::DispatcherFrame ^ frame);
[System.Security.SecurityCritical]
public static void PushFrame(System.Windows.Threading.DispatcherFrame frame);
public static void PushFrame(System.Windows.Threading.DispatcherFrame frame);
[<System.Security.SecurityCritical>]
static member PushFrame : System.Windows.Threading.DispatcherFrame -> unit
static member PushFrame : System.Windows.Threading.DispatcherFrame -> unit
Public Shared Sub PushFrame (frame As DispatcherFrame)

Parameters

frame
DispatcherFrame

Het frame dat de dispatcher moet verwerken.

Kenmerken

Uitzonderingen

frame is null.

HasShutdownFinished Is true

– of –

frame wordt uitgevoerd op een andere Dispatcher.

– of –

De verwerking van de dispatcher is uitgeschakeld.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een DispatcherFrame gebruikt om vergelijkbare resultaten te bereiken als de methode Windows Forms DoEvents.

public void DoEvents()
{
    DispatcherFrame frame = new DispatcherFrame();
    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
        new DispatcherOperationCallback(ExitFrame), frame);
    Dispatcher.PushFrame(frame);
}

public object ExitFrame(object f)
{
    ((DispatcherFrame)f).Continue = false;
   
    return null;
}
<SecurityPermissionAttribute(SecurityAction.Demand, Flags := SecurityPermissionFlag.UnmanagedCode)>
Public Sub DoEvents()
    Dim frame As New DispatcherFrame()
    Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, New DispatcherOperationCallback(AddressOf ExitFrame), frame)
    Dispatcher.PushFrame(frame)
End Sub

Public Function ExitFrame(ByVal f As Object) As Object
    CType(f, DispatcherFrame).Continue = False

    Return Nothing
End Function

Opmerkingen

A DispatcherFrame vertegenwoordigt een lus die werkitems verwerkt die in behandeling zijn.

De dispatcher verwerkt de wachtrij voor werkitems in een lus. De lus wordt een frame genoemd. De eerste lus wordt doorgaans door de toepassing gestart door aan te roepen Run.

PushFrame voert een lus in die wordt vertegenwoordigd door de parameter frame. Bij elke iteratie van de lus controleert Dispatcher de Continue eigenschap in de DispatcherFrame klasse om te bepalen of de lus moet worden voortgezet of als deze moet worden gestopt.

DispatcherFrame staat toe dat de Continue eigenschap expliciet kan worden ingesteld en het respecteert de HasShutdownStarted eigenschap op de Dispatcher. Dit betekent dat wanneer de Dispatcher frames worden afgesloten die gebruikmaken van de standaard DispatcherFrame implementatie, worden afgesloten, waardoor alle geneste frames kunnen worden afgesloten.

Van toepassing op

Zie ook