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
- autovalidator.cs
- SqlDataSourceView.cs
- DeviceOverridableAttribute.cs
- ProfileProvider.cs
- TagNameToTypeMapper.cs
- SystemIPAddressInformation.cs
- XNodeValidator.cs
- BrowserCapabilitiesCodeGenerator.cs
- OperandQuery.cs
- HttpSessionStateWrapper.cs
- WorkerProcess.cs
- StrongNameKeyPair.cs
- RtfFormatStack.cs
- TaiwanLunisolarCalendar.cs
- AsyncWaitHandle.cs
- DbUpdateCommandTree.cs
- WindowsClientCredential.cs
- EnlistmentState.cs
- Identifier.cs
- URLIdentityPermission.cs
- DataListDesigner.cs
- OracleRowUpdatingEventArgs.cs
- DbUpdateCommandTree.cs
- StringFormat.cs
- CompositeControl.cs
- BinHexEncoder.cs
- ToolBarOverflowPanel.cs
- ComplexType.cs
- UpdateRecord.cs
- sqlstateclientmanager.cs
- Formatter.cs
- StateItem.cs
- BamlLocalizabilityResolver.cs
- AbstractDataSvcMapFileLoader.cs
- RowVisual.cs
- SqlClientFactory.cs
- SponsorHelper.cs
- ZoneButton.cs
- URIFormatException.cs
- AnimationClock.cs
- HashCryptoHandle.cs
- DbMetaDataColumnNames.cs
- ObjectFullSpanRewriter.cs
- TabControlCancelEvent.cs
- WebPartZone.cs
- XmlSchemaCollection.cs
- RulePatternOps.cs
- HostingEnvironment.cs
- ValidatorCollection.cs
- Label.cs
- InvalidDataException.cs
- _LocalDataStoreMgr.cs
- MachineKeySection.cs
- ProfileEventArgs.cs
- FileResponseElement.cs
- OleDbPropertySetGuid.cs
- OdbcStatementHandle.cs
- PathSegment.cs
- ReadOnlyDataSource.cs
- DurableServiceAttribute.cs
- WorkflowEventArgs.cs
- ReadOnlyAttribute.cs
- ToolStripSeparatorRenderEventArgs.cs
- ImplicitInputBrush.cs
- StringConverter.cs
- NavigationService.cs
- CapabilitiesState.cs
- BitmapCacheBrush.cs
- Hash.cs
- IxmlLineInfo.cs
- ParamArrayAttribute.cs
- ImageButton.cs
- WebZone.cs
- PropertyDescriptorGridEntry.cs
- UriTemplateClientFormatter.cs
- Debug.cs
- FixedSOMPageConstructor.cs
- InputMethodStateTypeInfo.cs
- Themes.cs
- SqlFormatter.cs
- PropagationProtocolsTracing.cs
- SimpleType.cs
- Transform3D.cs
- SystemColorTracker.cs
- HMACRIPEMD160.cs
- StrokeCollectionConverter.cs
- GridToolTip.cs
- FrameworkContentElement.cs
- PixelFormats.cs
- EntityViewGenerator.cs
- XamlStyleSerializer.cs
- Rect.cs
- Expression.cs
- SchemaElementLookUpTableEnumerator.cs
- PolyLineSegment.cs
- ViewDesigner.cs
- PagedControl.cs
- DocumentXmlWriter.cs
- StringComparer.cs
- HttpResponseBase.cs