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
- HWStack.cs
- BoundConstants.cs
- HttpWriter.cs
- sortedlist.cs
- UpdateDelegates.Generated.cs
- COM2ComponentEditor.cs
- NotCondition.cs
- QueryOperator.cs
- EventlogProvider.cs
- PackWebRequest.cs
- OdbcConnection.cs
- ElementUtil.cs
- NumericUpDownAccelerationCollection.cs
- RightsManagementPermission.cs
- HScrollProperties.cs
- DES.cs
- AdornerHitTestResult.cs
- Vector3DCollectionValueSerializer.cs
- ReliabilityContractAttribute.cs
- BitmapEffectState.cs
- StandardCommandToolStripMenuItem.cs
- AddInContractAttribute.cs
- CoTaskMemHandle.cs
- ZipIOFileItemStream.cs
- ObjectDataSourceEventArgs.cs
- DropShadowEffect.cs
- PriorityBindingExpression.cs
- NullableIntSumAggregationOperator.cs
- _OverlappedAsyncResult.cs
- DataObjectCopyingEventArgs.cs
- LoginView.cs
- InheritanceContextChangedEventManager.cs
- GroupQuery.cs
- Parallel.cs
- DrawingAttributesDefaultValueFactory.cs
- PreparingEnlistment.cs
- CodeTypeDelegate.cs
- XmlWriter.cs
- Matrix.cs
- SqlProvider.cs
- SmiRecordBuffer.cs
- CompoundFileIOPermission.cs
- JavaScriptString.cs
- DbConnectionClosed.cs
- ReadContentAsBinaryHelper.cs
- FontDifferentiator.cs
- PnrpPermission.cs
- TreeBuilder.cs
- FormsAuthenticationConfiguration.cs
- ByteStorage.cs
- CommandBindingCollection.cs
- DiscreteKeyFrames.cs
- MasterPage.cs
- AjaxFrameworkAssemblyAttribute.cs
- PermissionAttributes.cs
- VectorAnimation.cs
- XmlSchemaComplexContent.cs
- documentsequencetextview.cs
- WindowsFormsHostAutomationPeer.cs
- DataGridViewCellConverter.cs
- D3DImage.cs
- PageCache.cs
- PlaceHolder.cs
- BrushProxy.cs
- SettingsPropertyWrongTypeException.cs
- Timer.cs
- BindStream.cs
- PowerModeChangedEventArgs.cs
- Parameter.cs
- InplaceBitmapMetadataWriter.cs
- ComponentResourceKeyConverter.cs
- AttributeAction.cs
- LinkedDataMemberFieldEditor.cs
- ISessionStateStore.cs
- MaskedTextProvider.cs
- DbConnectionStringBuilder.cs
- StaticFileHandler.cs
- EntityDescriptor.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- DeferredTextReference.cs
- ConcurrentQueue.cs
- TypeSystem.cs
- GenerateTemporaryTargetAssembly.cs
- TextComposition.cs
- ColumnClickEvent.cs
- Frame.cs
- GlyphCache.cs
- PersonalizationProviderCollection.cs
- BaseCodeDomTreeGenerator.cs
- TcpDuplicateContext.cs
- SingleStorage.cs
- AutoResizedEvent.cs
- MimeTypeMapper.cs
- RSAOAEPKeyExchangeFormatter.cs
- TempFiles.cs
- ExpressionEditorAttribute.cs
- XmlTypeAttribute.cs
- SqlTopReducer.cs
- ApplicationFileParser.cs
- InheritanceUI.cs