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
- COAUTHIDENTITY.cs
- DoubleStorage.cs
- Variable.cs
- OAVariantLib.cs
- SemanticKeyElement.cs
- LogicalExpr.cs
- ListViewDataItem.cs
- CryptographicAttribute.cs
- BuildProvidersCompiler.cs
- QuaternionAnimationBase.cs
- ClientSettingsSection.cs
- Pointer.cs
- Parameter.cs
- DesignerSerializationOptionsAttribute.cs
- MenuItemStyle.cs
- DBCSCodePageEncoding.cs
- PackWebRequestFactory.cs
- CollectionViewGroupInternal.cs
- GridProviderWrapper.cs
- ApplicationContext.cs
- TypeNameConverter.cs
- SimpleWorkerRequest.cs
- RemotingServices.cs
- ReversePositionQuery.cs
- ScriptResourceAttribute.cs
- WebBrowsableAttribute.cs
- SqlBuffer.cs
- C14NUtil.cs
- TransformerConfigurationWizardBase.cs
- HttpModuleCollection.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- DBCommandBuilder.cs
- QualifiedId.cs
- Ipv6Element.cs
- WindowPatternIdentifiers.cs
- mansign.cs
- TextDecoration.cs
- RC2CryptoServiceProvider.cs
- PageTheme.cs
- Literal.cs
- RoleServiceManager.cs
- Action.cs
- SyntaxCheck.cs
- PlacementWorkspace.cs
- ReachFixedPageSerializerAsync.cs
- ExchangeUtilities.cs
- TextRangeProviderWrapper.cs
- TdsParserStateObject.cs
- ControlSerializer.cs
- TextProperties.cs
- PenThreadWorker.cs
- PointCollectionValueSerializer.cs
- DBConnectionString.cs
- GeometryModel3D.cs
- DesignerSelectionListAdapter.cs
- RuntimeIdentifierPropertyAttribute.cs
- LayeredChannelListener.cs
- JsonClassDataContract.cs
- WebPartDeleteVerb.cs
- TextDecoration.cs
- ConfigurationLoaderException.cs
- GenerateScriptTypeAttribute.cs
- PointConverter.cs
- Parameter.cs
- CdpEqualityComparer.cs
- CommandEventArgs.cs
- PermissionAttributes.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Brush.cs
- ModifierKeysValueSerializer.cs
- HierarchicalDataSourceControl.cs
- Operators.cs
- XmlResolver.cs
- XPathNodeList.cs
- ServiceReference.cs
- DrawItemEvent.cs
- UiaCoreTypesApi.cs
- XamlReaderHelper.cs
- X509Utils.cs
- COM2IDispatchConverter.cs
- XmlSchemaImporter.cs
- SchemaLookupTable.cs
- SimpleWebHandlerParser.cs
- IisTraceWebEventProvider.cs
- MarkupProperty.cs
- XmlValidatingReader.cs
- TcpSocketManager.cs
- XpsFilter.cs
- xmlglyphRunInfo.cs
- thaishape.cs
- ProcessHostConfigUtils.cs
- RouteItem.cs
- IPAddress.cs
- SmiTypedGetterSetter.cs
- DataGridViewCheckBoxCell.cs
- WebHttpElement.cs
- SQLUtility.cs
- OleDbFactory.cs
- CodeGenerator.cs
- EditingMode.cs