Пример #1
0
        public static void PushFrame(DispatcherFrame frame)
        {
            if (frame == null)
            {
                throw new ArgumentNullException("frame");
            }

            Dispatcher dis = CurrentDispatcher;

            if (dis.HasShutdownFinished)
            {
                throw new InvalidOperationException("The Dispatcher has shut down");
            }

            if (frame.Running != null)
            {
                throw new InvalidOperationException("Frame is already running on a different dispatcher");
            }

            if ((dis.flags & Flags.Disabled) != 0)
            {
                throw new InvalidOperationException("Dispatcher processing has been disabled");
            }

            frame.ParentFrame = dis.currentFrame;
            dis.currentFrame  = frame;

            frame.Running = dis;

            dis.RunFrame(frame);
        }