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
- SourceLocationProvider.cs
- ListView.cs
- WebZone.cs
- ConstantProjectedSlot.cs
- DictionaryItemsCollection.cs
- ByteStream.cs
- CodeThrowExceptionStatement.cs
- SourceFileBuildProvider.cs
- StylusPointCollection.cs
- ProxyOperationRuntime.cs
- ExtendedProtectionPolicy.cs
- WebPartAuthorizationEventArgs.cs
- RunClient.cs
- OledbConnectionStringbuilder.cs
- WebBaseEventKeyComparer.cs
- KeySpline.cs
- DesignerView.xaml.cs
- XpsImage.cs
- DescendentsWalkerBase.cs
- WorkflowInstanceExtensionCollection.cs
- NumericUpDownAcceleration.cs
- odbcmetadatafactory.cs
- CodeBlockBuilder.cs
- VirtualizedContainerService.cs
- VideoDrawing.cs
- InheritanceAttribute.cs
- ProviderUtil.cs
- InstanceStore.cs
- SimpleModelProvider.cs
- SoapInteropTypes.cs
- ObservableCollection.cs
- TemplateBuilder.cs
- ByteKeyFrameCollection.cs
- SqlHelper.cs
- RepeatInfo.cs
- Matrix3D.cs
- Vector3DKeyFrameCollection.cs
- HttpAsyncResult.cs
- TraceSection.cs
- ExcCanonicalXml.cs
- CalendarDay.cs
- NopReturnReader.cs
- WebBrowserContainer.cs
- ApplicationContext.cs
- SecurityIdentifierConverter.cs
- AuthorizationSection.cs
- SkewTransform.cs
- OutOfProcStateClientManager.cs
- FontResourceCache.cs
- ControlBindingsCollection.cs
- DeclaredTypeValidatorAttribute.cs
- ConvertBinder.cs
- SubclassTypeValidatorAttribute.cs
- IntSecurity.cs
- AppDomainGrammarProxy.cs
- DataGridColumn.cs
- DictionaryCustomTypeDescriptor.cs
- TableHeaderCell.cs
- XmlNodeChangedEventManager.cs
- VirtualDirectoryMappingCollection.cs
- AmbientValueAttribute.cs
- ProbeMatchesMessage11.cs
- Scene3D.cs
- XhtmlBasicImageAdapter.cs
- PackageController.cs
- DateTimeHelper.cs
- RegexWorker.cs
- SolidBrush.cs
- TypeDescriptionProviderAttribute.cs
- DateTimeFormatInfo.cs
- RadialGradientBrush.cs
- RuleDefinitions.cs
- DbgUtil.cs
- SeparatorAutomationPeer.cs
- _RequestCacheProtocol.cs
- XmlNodeList.cs
- GroupBox.cs
- SqlClientMetaDataCollectionNames.cs
- ExecutionPropertyManager.cs
- ContractSearchPattern.cs
- TrackingWorkflowEventArgs.cs
- Site.cs
- RemotingSurrogateSelector.cs
- DocComment.cs
- securitycriticaldataClass.cs
- DeploymentSection.cs
- RowCache.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- AuthenticationServiceManager.cs
- Animatable.cs
- DesignerAttribute.cs
- PageContentCollection.cs
- WebPartDisplayModeCancelEventArgs.cs
- StaticContext.cs
- DES.cs
- bidPrivateBase.cs
- PlaceHolder.cs
- httpapplicationstate.cs
- CheckBoxList.cs
- ChangeTracker.cs