Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / Threading / DispatcherFrame.cs / 1305600 / 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
- SimpleWorkerRequest.cs
- Table.cs
- XmlSchemaObjectTable.cs
- DataGridViewIntLinkedList.cs
- HttpRequestCacheValidator.cs
- BounceEase.cs
- Base64Stream.cs
- StretchValidation.cs
- SQLDecimalStorage.cs
- CustomPopupPlacement.cs
- DataRowChangeEvent.cs
- PreviewPageInfo.cs
- SessionEndingEventArgs.cs
- CodeValidator.cs
- BindingContext.cs
- Properties.cs
- MetricEntry.cs
- SqlConnectionString.cs
- QilReplaceVisitor.cs
- ObjectSecurity.cs
- sqlnorm.cs
- ArrayHelper.cs
- ValidatorCollection.cs
- SingleSelectRootGridEntry.cs
- IndexedEnumerable.cs
- TypeElement.cs
- HealthMonitoringSectionHelper.cs
- CallTemplateAction.cs
- ExecutionContext.cs
- PresentationUIStyleResources.cs
- XsdValidatingReader.cs
- TextModifierScope.cs
- ProcessInputEventArgs.cs
- WebPartTransformerCollection.cs
- Model3D.cs
- FieldMetadata.cs
- PackagePart.cs
- DataGridViewColumnEventArgs.cs
- ComboBoxItem.cs
- SqlMethodTransformer.cs
- ItemCheckEvent.cs
- Semaphore.cs
- SynchronizedPool.cs
- COM2FontConverter.cs
- UnknownBitmapDecoder.cs
- ProgressiveCrcCalculatingStream.cs
- XmlChoiceIdentifierAttribute.cs
- UniqueConstraint.cs
- ObjectConverter.cs
- PageAsyncTask.cs
- ResourceManagerWrapper.cs
- Equal.cs
- OutputCacheSettings.cs
- Keywords.cs
- MouseGesture.cs
- TextOutput.cs
- ObservableCollectionDefaultValueFactory.cs
- CodeTypeReferenceExpression.cs
- ValidationHelper.cs
- CompensationTokenData.cs
- BitmapFrameDecode.cs
- TextTreeNode.cs
- GeometryCombineModeValidation.cs
- Point3DKeyFrameCollection.cs
- UnsafeNativeMethodsCLR.cs
- DataGridViewCheckBoxCell.cs
- Activity.cs
- RepeatInfo.cs
- RequestCachePolicy.cs
- GroupBoxAutomationPeer.cs
- EntityContainer.cs
- safesecurityhelperavalon.cs
- DataBindEngine.cs
- LZCodec.cs
- DesignerSerializationOptionsAttribute.cs
- StylusPointProperty.cs
- TreeViewDesigner.cs
- WindowExtensionMethods.cs
- DataBoundLiteralControl.cs
- SAPICategories.cs
- BooleanStorage.cs
- RouteItem.cs
- ButtonRenderer.cs
- FileDialogCustomPlace.cs
- ToolboxControl.cs
- PropertyGrid.cs
- PartitionResolver.cs
- IteratorAsyncResult.cs
- Columns.cs
- Item.cs
- EdgeProfileValidation.cs
- FacetEnabledSchemaElement.cs
- MaterializeFromAtom.cs
- ReadOnlyHierarchicalDataSourceView.cs
- QilParameter.cs
- InfoCardProofToken.cs
- WebPartExportVerb.cs
- precedingsibling.cs
- MessageEnumerator.cs
- XmlChildEnumerator.cs