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
- peersecuritysettings.cs
- WebPartHelpVerb.cs
- Overlapped.cs
- BitmapVisualManager.cs
- SqlConnectionHelper.cs
- Preprocessor.cs
- AuthorizationSection.cs
- ChannelSinkStacks.cs
- NullableConverter.cs
- AutomationPeer.cs
- XmlJsonReader.cs
- Misc.cs
- WpfSharedXamlSchemaContext.cs
- TdsParserStateObject.cs
- XamlReader.cs
- PartialArray.cs
- TemplateContainer.cs
- XmlUtil.cs
- SqlClientWrapperSmiStreamChars.cs
- NameSpaceExtractor.cs
- StrongNameIdentityPermission.cs
- MergeFilterQuery.cs
- PointConverter.cs
- IndicShape.cs
- ClientSideProviderDescription.cs
- Span.cs
- EraserBehavior.cs
- DeferredTextReference.cs
- HttpStaticObjectsCollectionBase.cs
- OleDbInfoMessageEvent.cs
- ZipArchive.cs
- BitSet.cs
- CellTreeSimplifier.cs
- Operators.cs
- DynamicControlParameter.cs
- Int32AnimationUsingKeyFrames.cs
- RegexStringValidatorAttribute.cs
- SurrogateDataContract.cs
- DataGridSortCommandEventArgs.cs
- X509RawDataKeyIdentifierClause.cs
- OleDbReferenceCollection.cs
- StructuredTypeEmitter.cs
- FormsAuthenticationConfiguration.cs
- Connector.xaml.cs
- HostingEnvironmentSection.cs
- CodeExporter.cs
- XmlMemberMapping.cs
- FilteredReadOnlyMetadataCollection.cs
- DataControlFieldCollection.cs
- PageThemeCodeDomTreeGenerator.cs
- CatalogPartChrome.cs
- hresults.cs
- StylusPointProperties.cs
- LayoutManager.cs
- DesigntimeLicenseContext.cs
- ArgumentsParser.cs
- SpecialNameAttribute.cs
- NameHandler.cs
- SettingsAttributeDictionary.cs
- MiniModule.cs
- AddingNewEventArgs.cs
- XPathChildIterator.cs
- FloaterBaseParaClient.cs
- HttpContext.cs
- Line.cs
- QuaternionRotation3D.cs
- DeviceFilterEditorDialog.cs
- FtpCachePolicyElement.cs
- ResourceContainer.cs
- ActionMessageFilter.cs
- XmlCollation.cs
- DataServiceSaveChangesEventArgs.cs
- ISAPIRuntime.cs
- DateTimeStorage.cs
- DropSource.cs
- AssociationTypeEmitter.cs
- DefaultParameterValueAttribute.cs
- BamlCollectionHolder.cs
- NextPreviousPagerField.cs
- SynchronizingStream.cs
- VectorCollectionConverter.cs
- FixedSOMTextRun.cs
- FrameworkElement.cs
- CodeTypeParameterCollection.cs
- LocationReference.cs
- RightNameExpirationInfoPair.cs
- TransactionScope.cs
- IsolatedStorageException.cs
- AccessedThroughPropertyAttribute.cs
- ForeignConstraint.cs
- FilterFactory.cs
- TextMarkerSource.cs
- DbProviderFactory.cs
- OracleColumn.cs
- DaylightTime.cs
- ScriptResourceAttribute.cs
- AxHost.cs
- MetabaseSettingsIis7.cs
- FileUpload.cs
- DataListGeneralPage.cs