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
- EntityDescriptor.cs
- TabletCollection.cs
- TypeGeneratedEventArgs.cs
- SQLBytes.cs
- SQLBytesStorage.cs
- XmlIterators.cs
- LogConverter.cs
- MasterPageCodeDomTreeGenerator.cs
- cryptoapiTransform.cs
- SoapAttributeAttribute.cs
- Utilities.cs
- MailSettingsSection.cs
- XmlDesigner.cs
- ValidationSettings.cs
- ContractUtils.cs
- RoutedEventConverter.cs
- Converter.cs
- BoolLiteral.cs
- ProtocolsConfigurationEntry.cs
- InkPresenterAutomationPeer.cs
- HostedHttpTransportManager.cs
- TableCell.cs
- PKCS1MaskGenerationMethod.cs
- TargetParameterCountException.cs
- CorePropertiesFilter.cs
- DataList.cs
- RankException.cs
- X509CertificateChain.cs
- ComEventsHelper.cs
- InvalidComObjectException.cs
- Task.cs
- CodeSnippetStatement.cs
- SafeProcessHandle.cs
- UserControlBuildProvider.cs
- XmlSchemaGroup.cs
- CodeVariableReferenceExpression.cs
- SafeReadContext.cs
- DataBinding.cs
- LinearQuaternionKeyFrame.cs
- HttpCapabilitiesBase.cs
- MarkupProperty.cs
- XmlSchemaParticle.cs
- SqlClientWrapperSmiStreamChars.cs
- SpeechUI.cs
- ControlEvent.cs
- StylusCaptureWithinProperty.cs
- Thread.cs
- HttpListenerRequest.cs
- CookieHandler.cs
- Directory.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- EventSetter.cs
- PropertyDescriptor.cs
- SemanticResultKey.cs
- HostProtectionException.cs
- TracingConnection.cs
- OdbcHandle.cs
- TypeConverterHelper.cs
- BooleanConverter.cs
- DetailsViewInsertedEventArgs.cs
- EventLogWatcher.cs
- DataChangedEventManager.cs
- TreeBuilderXamlTranslator.cs
- DetailsViewUpdateEventArgs.cs
- RuntimeWrappedException.cs
- MembershipAdapter.cs
- SeverityFilter.cs
- GridItemCollection.cs
- Geometry3D.cs
- GroupStyle.cs
- TraceHandler.cs
- Int32Collection.cs
- ToolStripTextBox.cs
- MultiPropertyDescriptorGridEntry.cs
- sqlmetadatafactory.cs
- StreamResourceInfo.cs
- DiscoveryOperationContext.cs
- SequenceFullException.cs
- HttpWebRequestElement.cs
- RegisteredHiddenField.cs
- EnumerableValidator.cs
- DataRelationCollection.cs
- SqlIdentifier.cs
- PeerName.cs
- SoapEnumAttribute.cs
- PasswordTextContainer.cs
- Invariant.cs
- OleDbParameterCollection.cs
- WizardStepCollectionEditor.cs
- IPEndPoint.cs
- Size3DValueSerializer.cs
- CodeNamespaceCollection.cs
- TreeNode.cs
- WebUtil.cs
- StylusPointProperty.cs
- RelationshipSet.cs
- WindowsFormsSectionHandler.cs
- OleDbInfoMessageEvent.cs
- DataList.cs
- NamespaceEmitter.cs