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
- ForceCopyBuildProvider.cs
- DataConnectionHelper.cs
- InputBinding.cs
- AllMembershipCondition.cs
- Exceptions.cs
- ErrorRuntimeConfig.cs
- CatalogPart.cs
- FrugalList.cs
- KeySplineConverter.cs
- GeneralTransform.cs
- AspNetHostingPermission.cs
- EllipticalNodeOperations.cs
- TextBoxLine.cs
- DataGridColumnHeader.cs
- CssClassPropertyAttribute.cs
- ListItemParagraph.cs
- SQLString.cs
- NetTcpBindingCollectionElement.cs
- DeploymentExceptionMapper.cs
- GroupQuery.cs
- KeySpline.cs
- RelationshipEndMember.cs
- PageSetupDialog.cs
- StreamingContext.cs
- BaseTemplateCodeDomTreeGenerator.cs
- _Rfc2616CacheValidators.cs
- UriSectionData.cs
- CapabilitiesState.cs
- FixedSOMFixedBlock.cs
- ConfigXmlCDataSection.cs
- ListViewAutomationPeer.cs
- COM2PictureConverter.cs
- Perspective.cs
- ReferentialConstraint.cs
- CrossContextChannel.cs
- Range.cs
- controlskin.cs
- BamlReader.cs
- SecurityDescriptor.cs
- PersonalizationStateInfoCollection.cs
- DataControlFieldHeaderCell.cs
- WaitHandle.cs
- DoubleLink.cs
- WindowPattern.cs
- Vector3D.cs
- AutomationPropertyInfo.cs
- HttpModulesSection.cs
- HuffmanTree.cs
- FloaterParaClient.cs
- WebServiceParameterData.cs
- ColorAnimationUsingKeyFrames.cs
- CellIdBoolean.cs
- XmlSortKeyAccumulator.cs
- counter.cs
- EntityReference.cs
- ScriptResourceHandler.cs
- Formatter.cs
- DefaultCommandConverter.cs
- CreatingCookieEventArgs.cs
- dsa.cs
- DesignerMetadata.cs
- Merger.cs
- AdornerDecorator.cs
- ContentElement.cs
- CuspData.cs
- ObjectListDataBindEventArgs.cs
- SafeEventLogReadHandle.cs
- TemplateBuilder.cs
- TransformerConfigurationWizardBase.cs
- StaticTextPointer.cs
- InputScope.cs
- ChangeToolStripParentVerb.cs
- DbConnectionPoolGroup.cs
- ApplyImportsAction.cs
- ExecutionContext.cs
- TimelineGroup.cs
- IsolatedStorageException.cs
- FolderBrowserDialogDesigner.cs
- Hash.cs
- CommonObjectSecurity.cs
- DatatypeImplementation.cs
- ButtonChrome.cs
- CornerRadiusConverter.cs
- StatusBarPanelClickEvent.cs
- ActivityCodeGenerator.cs
- SystemKeyConverter.cs
- HttpConfigurationSystem.cs
- TextServicesManager.cs
- XhtmlConformanceSection.cs
- FlowPosition.cs
- Bezier.cs
- FileUtil.cs
- XmlSchemaAny.cs
- PageStatePersister.cs
- HwndKeyboardInputProvider.cs
- HitTestParameters.cs
- EntityProviderFactory.cs
- RemotingServices.cs
- WindowHelperService.cs
- XmlHelper.cs