Dispatcher.PushFrame(DispatcherFrame) Метод

Определение

Входит в цикл выполнения.Enters an execute loop.

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

Параметры

frame
DispatcherFrame

Фрейм для обработки диспетчером.The frame for the dispatcher to process.

Атрибуты

Исключения

Свойство frame имеет значение null.frame is null.

HasShutdownFinished равно trueHasShutdownFinished is true

-или--or- frame выполняется с другим Dispatcher.frame is running on a different Dispatcher.

-или--or- Диспетчер отключен.Dispatcher processing has been disabled.

Примеры

В следующем примере показано, как использовать DispatcherFrame для получения аналогичных результатов в методе Windows FormsWindows Forms DoEvents.The following example shows how to use a DispatcherFrame to achieve similar results as the Windows FormsWindows Forms DoEvents method.

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
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

Комментарии

DispatcherFrame представляет цикл, который обрабатывает ожидающие рабочие элементы.A DispatcherFrame represents a loop that processes pending work items.

Диспетчер обрабатывает очередь рабочих элементов в цикле.The Dispatcher processes the work item queue in a loop. Цикл называется кадром.The loop is referred to as a frame. Исходный цикл обычно инициируется приложением путем вызова Run.The initial loop is typically initiated by the application by calling Run.

PushFrame входит в цикл, представленный параметром frame.PushFrame enters a loop represented by the parameter frame. При каждой итерации цикла Dispatcher проверит свойство Continue в классе DispatcherFrame, чтобы определить, следует ли продолжить цикл или его следует прекратить.At each iteration of the loop, the Dispatcher will check the Continue property on the DispatcherFrame class to determine whether the loop should continue or if it should stop.

DispatcherFrame позволяет явно задать свойство Continue и учитывает свойство HasShutdownStarted в Dispatcher.DispatcherFrame allows for the Continue property to be set explicitly and it respects the HasShutdownStarted property on the Dispatcher. Это означает, что когда Dispatcher начинает работу, кадры, использующие реализацию DispatcherFrame по умолчанию, будут завершаться, что позволит выйти из всех вложенных фреймов.This means when the Dispatcher starts to shut down, frames that use the default DispatcherFrame implementation will exit, which enables all nested frames to exit.

Применяется к

Дополнительно