Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / System / Windows / Threading / DispatcherFrame.cs / 1 / DispatcherFrame.cs
using System;
using System.Security;
namespace System.Windows.Threading
{
///
/// Representation of Dispatcher frame.
///
public class DispatcherFrame : DispatcherObject
{
///
/// Critical: This code exists to ensure that the static variables initialized
/// do not cause security violations.The reason this comes into existance is because
/// of the call to RegisterWindowMessage
/// TreatAsSafe:This is safe to call
///
[SecurityCritical,SecurityTreatAsSafe]
static DispatcherFrame()
{
}
///
/// Constructs a new instance of the DispatcherFrame class.
///
public DispatcherFrame() : this(true)
{
}
///
/// Constructs a new instance of the DispatcherFrame class.
///
///
/// Indicates whether or not this frame will exit when all frames
/// are requested to exit.
///
/// Dispatcher frames typically break down into two categories:
/// 1) Long running, general purpose frames, that exit only when
/// told to. These frames should exit when requested.
/// 2) Short running, very specific frames that exit themselves
/// when an important criteria is met. These frames may
/// consider not exiting when requested in favor of waiting
/// for their important criteria to be met. These frames
/// should have a timeout associated with them.
///
public DispatcherFrame(bool exitWhenRequested)
{
_exitWhenRequested = exitWhenRequested;
_continue = true;
}
///
/// Indicates that this dispatcher frame should exit.
///
///
/// Critical - calls a critical method - postThreadMessage.
/// PublicOK - all we're doing is posting a current message to our thread.
/// net effect is the dispatcher "wakes up"
/// and uses the continue flag ( which may have just changed).
///
public bool Continue
{
get
{
// This method is free-threaded.
// First check if this frame wants to continue.
bool shouldContinue = _continue;
if(shouldContinue)
{
// This frame wants to continue, so next check if it will
// respect the "exit requests" from the dispatcher.
if(_exitWhenRequested)
{
Dispatcher dispatcher = Dispatcher;
// This frame is willing to respect the "exit requests" of
// the dispatcher, so check them.
if(dispatcher._exitAllFrames || dispatcher._hasShutdownStarted)
{
shouldContinue = false;
}
}
}
return shouldContinue;
}
[SecurityCritical]
set
{
// This method is free-threaded.
_continue = value;
// Post a message so that the message pump will wake up and
// check our continue state.
Dispatcher.BeginInvoke(DispatcherPriority.Send, (DispatcherOperationCallback) delegate(object unused) {return null;}, null);
}
}
private bool _exitWhenRequested;
private bool _continue;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlLinkedNode.cs
- TypeInitializationException.cs
- KnownTypesProvider.cs
- ImageCreator.cs
- PlainXmlSerializer.cs
- HttpListenerRequest.cs
- KeyedCollection.cs
- KeyboardDevice.cs
- ReturnValue.cs
- GeneralTransform3DGroup.cs
- LazyTextWriterCreator.cs
- BuildManager.cs
- TypeListConverter.cs
- TouchEventArgs.cs
- XsltLibrary.cs
- GACIdentityPermission.cs
- HwndKeyboardInputProvider.cs
- FormViewInsertEventArgs.cs
- PriorityBinding.cs
- ExpressionLexer.cs
- ProgressBarBrushConverter.cs
- FrameworkElementFactoryMarkupObject.cs
- GraphicsPath.cs
- SecureStringHasher.cs
- StringInfo.cs
- SymbolPair.cs
- TypeLibConverter.cs
- DeviceContext.cs
- EncoderExceptionFallback.cs
- XmlSerializationReader.cs
- ConfigXmlElement.cs
- MaskedTextProvider.cs
- BaseValidator.cs
- WindowsListViewSubItem.cs
- FixedPageAutomationPeer.cs
- XmlReader.cs
- OutKeywords.cs
- ToolStripItemBehavior.cs
- LZCodec.cs
- ModelItemExtensions.cs
- ToolbarAUtomationPeer.cs
- EncodingDataItem.cs
- WithParamAction.cs
- DoubleLinkListEnumerator.cs
- CodePrimitiveExpression.cs
- DesignerGeometryHelper.cs
- StoryFragments.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- CancelEventArgs.cs
- AsymmetricSecurityBindingElement.cs
- LinqDataSourceStatusEventArgs.cs
- DataGridViewDataConnection.cs
- TypographyProperties.cs
- ActivityDesignerResources.cs
- ObjectDataSourceView.cs
- TypeUsage.cs
- FormViewRow.cs
- SwitchLevelAttribute.cs
- DoubleCollectionValueSerializer.cs
- SignatureResourcePool.cs
- UInt64.cs
- RuntimeCompatibilityAttribute.cs
- ByteStorage.cs
- PropertyCollection.cs
- ADMembershipUser.cs
- XPathAncestorIterator.cs
- HtmlEmptyTagControlBuilder.cs
- SqlFormatter.cs
- ValidationEventArgs.cs
- SQLRoleProvider.cs
- InvariantComparer.cs
- DataGridHeaderBorder.cs
- HostUtils.cs
- ProcessRequestArgs.cs
- DayRenderEvent.cs
- HierarchicalDataBoundControl.cs
- Win32.cs
- SpellerError.cs
- CustomActivityDesigner.cs
- SettingsProperty.cs
- filewebrequest.cs
- DispatcherBuilder.cs
- ApplyImportsAction.cs
- WorkflowEventArgs.cs
- FocusTracker.cs
- DataGridHeaderBorder.cs
- WebPartDescription.cs
- TimeoutException.cs
- SqlBuilder.cs
- EmissiveMaterial.cs
- DoubleAnimationClockResource.cs
- BitArray.cs
- Screen.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ChangeNode.cs
- WebPartDisplayModeCollection.cs
- PasswordRecovery.cs
- DataSourceGroupCollection.cs
- XmlObjectSerializerWriteContextComplex.cs
- SecurityRuntime.cs