Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- PointIndependentAnimationStorage.cs
- DecodeHelper.cs
- SubstitutionList.cs
- ResourceType.cs
- WebPartDisplayMode.cs
- FixedTextView.cs
- remotingproxy.cs
- AsymmetricAlgorithm.cs
- EntityClassGenerator.cs
- CombinedHttpChannel.cs
- XmlElementCollection.cs
- DataSet.cs
- XmlWhitespace.cs
- DebugView.cs
- SoapTypeAttribute.cs
- RangeValuePattern.cs
- HyperlinkAutomationPeer.cs
- ApplicationException.cs
- GenericXmlSecurityToken.cs
- StaticContext.cs
- ConfigurationValue.cs
- GestureRecognitionResult.cs
- PointCollectionConverter.cs
- LostFocusEventManager.cs
- UserControlBuildProvider.cs
- UnsafeNativeMethods.cs
- Events.cs
- ErrorWebPart.cs
- ValidationVisibilityAttribute.cs
- GraphicsState.cs
- SqlDataAdapter.cs
- HeaderUtility.cs
- ToolStrip.cs
- SkewTransform.cs
- ProfilePropertySettings.cs
- SoapCodeExporter.cs
- SinglePageViewer.cs
- SqlDataSourceCustomCommandEditor.cs
- SystemTcpConnection.cs
- DataGridViewAccessibleObject.cs
- CalendarDay.cs
- RangeValidator.cs
- Cursors.cs
- OdbcConnectionStringbuilder.cs
- TableColumn.cs
- TextWriterTraceListener.cs
- XXXInfos.cs
- ExtensionDataReader.cs
- ThreadPool.cs
- PolicyStatement.cs
- RemotingAttributes.cs
- Utils.cs
- Vector3dCollection.cs
- AsymmetricSignatureDeformatter.cs
- TripleDES.cs
- ContextMenu.cs
- KeyPressEvent.cs
- ClonableStack.cs
- BitSet.cs
- ListItemsCollectionEditor.cs
- WsdlEndpointConversionContext.cs
- XmlProcessingInstruction.cs
- DesignerSerializationOptionsAttribute.cs
- storepermission.cs
- CheckBoxPopupAdapter.cs
- SurrogateSelector.cs
- ObjectListDesigner.cs
- LambdaCompiler.cs
- Block.cs
- Expr.cs
- ProxyFragment.cs
- IndentTextWriter.cs
- DataGridViewColumn.cs
- Symbol.cs
- AppDomainUnloadedException.cs
- SystemColors.cs
- PrintingPermission.cs
- DataSourceSelectArguments.cs
- SerializerWriterEventHandlers.cs
- XamlStream.cs
- IncrementalCompileAnalyzer.cs
- ScriptReferenceEventArgs.cs
- RoutingEndpointTrait.cs
- Compiler.cs
- SiteMapNodeItem.cs
- NotifyInputEventArgs.cs
- ConnectionInterfaceCollection.cs
- SiteMapPath.cs
- Line.cs
- XPathNavigatorException.cs
- IPAddressCollection.cs
- CodeSubDirectory.cs
- Point3DKeyFrameCollection.cs
- IItemContainerGenerator.cs
- StructuredTypeEmitter.cs
- XmlArrayItemAttribute.cs
- ObjectListDataBindEventArgs.cs
- KeyTime.cs
- AdRotator.cs
- TemplateField.cs