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
- WebPartUserCapability.cs
- CharConverter.cs
- MembershipPasswordException.cs
- SourceFilter.cs
- InvalidOleVariantTypeException.cs
- PublisherIdentityPermission.cs
- CodeParameterDeclarationExpression.cs
- AnimationException.cs
- OdbcParameter.cs
- XmlNode.cs
- LogEntryHeaderv1Deserializer.cs
- Image.cs
- _Rfc2616CacheValidators.cs
- DbConnectionPoolCounters.cs
- GridProviderWrapper.cs
- Parser.cs
- Block.cs
- AppendHelper.cs
- IdleTimeoutMonitor.cs
- WindowsFormsLinkLabel.cs
- HitTestFilterBehavior.cs
- TextServicesPropertyRanges.cs
- SplitterEvent.cs
- ReadOnlyDictionary.cs
- ProgressiveCrcCalculatingStream.cs
- ZipFileInfoCollection.cs
- OperatingSystem.cs
- EventManager.cs
- ScrollChrome.cs
- SelfSignedCertificate.cs
- PopupRoot.cs
- OleDbError.cs
- XmlNodeChangedEventArgs.cs
- EnumType.cs
- DataGridPagingPage.cs
- tibetanshape.cs
- PrinterResolution.cs
- AuthenticationException.cs
- FormViewDeleteEventArgs.cs
- SamlAttribute.cs
- DocumentOrderQuery.cs
- HandlerFactoryCache.cs
- Pointer.cs
- LinkArea.cs
- SecurityTokenException.cs
- TextElementEnumerator.cs
- StringBlob.cs
- _StreamFramer.cs
- UnauthorizedWebPart.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- NativeRecognizer.cs
- CodeAccessSecurityEngine.cs
- RouteParameter.cs
- RouteTable.cs
- translator.cs
- WebBrowserNavigatingEventHandler.cs
- WindowsFormsSectionHandler.cs
- CapabilitiesSection.cs
- TextBoxLine.cs
- OleDbInfoMessageEvent.cs
- Perspective.cs
- PublisherIdentityPermission.cs
- ToolStripManager.cs
- NetCodeGroup.cs
- TreeIterators.cs
- Matrix.cs
- EventLogEntryCollection.cs
- AmbientLight.cs
- DynamicValueConverter.cs
- Identity.cs
- Activity.cs
- ToolTip.cs
- KeyValuePairs.cs
- BrowserDefinition.cs
- CodeDOMProvider.cs
- webeventbuffer.cs
- VisualTreeUtils.cs
- VectorAnimation.cs
- WebDisplayNameAttribute.cs
- SqlParameterCollection.cs
- RenderData.cs
- SchemaImporterExtensionsSection.cs
- JulianCalendar.cs
- MultiByteCodec.cs
- XmlNodeComparer.cs
- RTLAwareMessageBox.cs
- AutomationPropertyInfo.cs
- DoubleAnimationBase.cs
- XmlQueryOutput.cs
- XsdBuildProvider.cs
- figurelength.cs
- DataBoundControlAdapter.cs
- BuilderInfo.cs
- JapaneseLunisolarCalendar.cs
- GlyphTypeface.cs
- SelectionListDesigner.cs
- ChannelFactory.cs
- HtmlInputText.cs
- UIElementIsland.cs
- ThaiBuddhistCalendar.cs