Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- HttpWebRequest.cs
- X509Utils.cs
- BindableTemplateBuilder.cs
- TransformerConfigurationWizardBase.cs
- CompilerParameters.cs
- GetReadStreamResult.cs
- RC2.cs
- ProcessModuleCollection.cs
- PingReply.cs
- OleDbConnectionFactory.cs
- GB18030Encoding.cs
- PointCollectionConverter.cs
- Focus.cs
- WebBrowsableAttribute.cs
- SqlDataSourceQueryEditorForm.cs
- CommonObjectSecurity.cs
- FragmentQueryProcessor.cs
- COM2ExtendedBrowsingHandler.cs
- Array.cs
- XmlKeywords.cs
- TableHeaderCell.cs
- RepeaterItem.cs
- Vector3DAnimationUsingKeyFrames.cs
- HwndSourceKeyboardInputSite.cs
- counter.cs
- ExclusiveTcpListener.cs
- FontUnit.cs
- Convert.cs
- RemoteX509Token.cs
- DataRowChangeEvent.cs
- SecurityPolicyVersion.cs
- WindowsButton.cs
- EncoderParameters.cs
- RichTextBox.cs
- MissingFieldException.cs
- ColorMatrix.cs
- Closure.cs
- ManipulationInertiaStartingEventArgs.cs
- SimpleRecyclingCache.cs
- SmtpAuthenticationManager.cs
- AxDesigner.cs
- COM2ExtendedUITypeEditor.cs
- HyperlinkAutomationPeer.cs
- ModifiableIteratorCollection.cs
- ProcessModelInfo.cs
- IItemProperties.cs
- UpdateExpressionVisitor.cs
- UrlAuthFailedErrorFormatter.cs
- StructuralType.cs
- AppDomainUnloadedException.cs
- ValueConversionAttribute.cs
- RangeValuePattern.cs
- InputScope.cs
- SHA1Managed.cs
- WpfKnownMemberInvoker.cs
- ImageKeyConverter.cs
- UserNamePasswordValidator.cs
- Button.cs
- CalendarDesigner.cs
- VectorValueSerializer.cs
- Point3DCollection.cs
- DbDataRecord.cs
- TextView.cs
- InvokeDelegate.cs
- SafeNativeMethodsOther.cs
- FloatMinMaxAggregationOperator.cs
- TypeUtil.cs
- HostingEnvironmentException.cs
- ResourceExpression.cs
- AlgoModule.cs
- FileChangesMonitor.cs
- TakeQueryOptionExpression.cs
- LinqDataSource.cs
- BindingNavigatorDesigner.cs
- _ConnectOverlappedAsyncResult.cs
- RouteCollection.cs
- InternalCache.cs
- RewritingValidator.cs
- HttpStaticObjectsCollectionBase.cs
- Path.cs
- Membership.cs
- OverflowException.cs
- RuntimeConfig.cs
- CustomCredentialPolicy.cs
- SQLGuid.cs
- UseLicense.cs
- InheritedPropertyChangedEventArgs.cs
- DetailsView.cs
- SmtpReplyReader.cs
- XsdCachingReader.cs
- StatusBar.cs
- HiddenFieldPageStatePersister.cs
- FileInfo.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- TypeInitializationException.cs
- EmptyControlCollection.cs
- CapabilitiesPattern.cs
- Operators.cs
- CodeVariableReferenceExpression.cs
- RegionData.cs