Dispatcher.PushFrame(DispatcherFrame) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wprowadza pętlę wykonywania.
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)
Parametry
- frame
- DispatcherFrame
Ramka do przetworzenia przez dyspozytor.
- Atrybuty
Wyjątki
frame
to null
.
HasShutdownFinished to true
-lub-
frame
jest uruchomiona w innym Dispatcherobiekcie .
-lub- Przetwarzanie dyspozytora zostało wyłączone.
Przykłady
W poniższym przykładzie pokazano, jak użyć obiektu DispatcherFrame , aby osiągnąć podobne wyniki jak metoda Windows FormsDoEvents.
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
Uwagi
Element DispatcherFrame reprezentuje pętlę, która przetwarza oczekujące elementy robocze.
Dyspozytor przetwarza kolejkę elementów roboczych w pętli. Pętla jest określana jako ramka. Pętla początkowa jest zazwyczaj inicjowana przez aplikację przez wywołanie metody Run.
PushFrame wprowadza pętlę reprezentowaną przez parametr frame
. Przy każdej iteracji pętli funkcja sprawdzi Continue właściwość w DispatcherFrame klasie, aby określić, Dispatcher czy pętla powinna kontynuować, czy też powinna zostać zatrzymana.
DispatcherFrame umożliwia jawne Continue ustawienie właściwości i uwzględnia HasShutdownStarted właściwość w obiekcie Dispatcher. Oznacza to, że po rozpoczęciu Dispatcher zamykania ramki korzystające z implementacji domyślnej DispatcherFrame zakończą działanie, co umożliwia zakończenie wszystkich zagnieżdżonych ramek.