Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / 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. 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
- FormView.cs
- TextModifierScope.cs
- Statements.cs
- TextRangeEditTables.cs
- Selector.cs
- QueryCreatedEventArgs.cs
- CompiledELinqQueryState.cs
- GregorianCalendarHelper.cs
- WindowsTokenRoleProvider.cs
- DetailsViewDeletedEventArgs.cs
- loginstatus.cs
- BindingExpressionUncommonField.cs
- RepeatButton.cs
- LongMinMaxAggregationOperator.cs
- XmlBinaryReader.cs
- DataFieldConverter.cs
- TextRangeEdit.cs
- SqlXmlStorage.cs
- OleDbConnectionFactory.cs
- StructuredTypeInfo.cs
- CancellationState.cs
- GraphicsState.cs
- BorderGapMaskConverter.cs
- ThreadExceptionDialog.cs
- SqlWorkflowInstanceStore.cs
- StackBuilderSink.cs
- IntMinMaxAggregationOperator.cs
- SchemaNamespaceManager.cs
- ImageMapEventArgs.cs
- SocketPermission.cs
- RSAProtectedConfigurationProvider.cs
- DynamicScriptObject.cs
- ChangeDirector.cs
- MoveSizeWinEventHandler.cs
- WhitespaceRule.cs
- ManualResetEvent.cs
- StickyNoteAnnotations.cs
- ApplicationActivator.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- DefaultValueAttribute.cs
- XmlAttributeCache.cs
- ClientProxyGenerator.cs
- HashSet.cs
- Line.cs
- NominalTypeEliminator.cs
- DateTimeConverter.cs
- DbParameterHelper.cs
- HtmlTextArea.cs
- CaseStatementSlot.cs
- XamlPathDataSerializer.cs
- TemplatePagerField.cs
- securitycriticaldataformultiplegetandset.cs
- FullTrustAssembliesSection.cs
- COM2EnumConverter.cs
- SqlDeflator.cs
- SupportsEventValidationAttribute.cs
- FilterableAttribute.cs
- DeploymentSection.cs
- CompilerState.cs
- ComboBox.cs
- safex509handles.cs
- InputEventArgs.cs
- SerializationFieldInfo.cs
- PolyLineSegment.cs
- EditorZoneBase.cs
- ContainerUtilities.cs
- FlowDocumentFormatter.cs
- TreeNodeStyle.cs
- EntityViewGenerationConstants.cs
- NoClickablePointException.cs
- HtmlTableCell.cs
- Html32TextWriter.cs
- XamlTreeBuilder.cs
- EventListenerClientSide.cs
- XappLauncher.cs
- AstTree.cs
- EventlogProvider.cs
- StylesEditorDialog.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- SoapReflectionImporter.cs
- ExecutedRoutedEventArgs.cs
- DependencyObjectType.cs
- FileRecordSequence.cs
- XPathSelfQuery.cs
- BindingEntityInfo.cs
- QueryResults.cs
- RTTypeWrapper.cs
- WorkflowOperationBehavior.cs
- OverflowException.cs
- ThaiBuddhistCalendar.cs
- OutputCacheSection.cs
- ArglessEventHandlerProxy.cs
- StringValueSerializer.cs
- SystemInformation.cs
- ControlValuePropertyAttribute.cs
- PartitionedStream.cs
- Oid.cs
- QuaternionAnimation.cs
- LeafCellTreeNode.cs
- DesignerWidgets.cs