Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- OleDbConnection.cs
- BehaviorEditorPart.cs
- CodeTypeDeclarationCollection.cs
- LabelLiteral.cs
- HttpCapabilitiesEvaluator.cs
- BitmapEffectInput.cs
- GB18030Encoding.cs
- unitconverter.cs
- AdRotator.cs
- ChtmlCommandAdapter.cs
- MergePropertyDescriptor.cs
- XmlSchemaAppInfo.cs
- EventLogQuery.cs
- ElementHost.cs
- HighlightVisual.cs
- LoginDesigner.cs
- EntityWrapperFactory.cs
- UserNameServiceElement.cs
- Roles.cs
- SystemIcmpV4Statistics.cs
- NumberSubstitution.cs
- ImageClickEventArgs.cs
- XpsResourcePolicy.cs
- DateBoldEvent.cs
- StateFinalizationActivity.cs
- RC2CryptoServiceProvider.cs
- WebBrowserBase.cs
- ModuleBuilder.cs
- OptimizerPatterns.cs
- ToolTipAutomationPeer.cs
- xmlglyphRunInfo.cs
- ClientProxyGenerator.cs
- QuaternionValueSerializer.cs
- TransactionManager.cs
- FlowLayoutPanel.cs
- _ProxyRegBlob.cs
- SiteMapProvider.cs
- DriveInfo.cs
- Events.cs
- MenuTracker.cs
- DataSet.cs
- AnnotationResource.cs
- Util.cs
- AccessControlEntry.cs
- PostBackOptions.cs
- TemplateManager.cs
- StreamGeometryContext.cs
- DetailsViewInsertedEventArgs.cs
- EntityModelSchemaGenerator.cs
- TypedReference.cs
- CompoundFileReference.cs
- MessageSmuggler.cs
- SpotLight.cs
- ClassDataContract.cs
- SignedXml.cs
- CommandArguments.cs
- COAUTHINFO.cs
- CompiledQuery.cs
- DataContractSerializerSection.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- TextEditorTables.cs
- UnsafeNativeMethods.cs
- SystemWebSectionGroup.cs
- Adorner.cs
- DesignerResources.cs
- SpeakCompletedEventArgs.cs
- ListViewHitTestInfo.cs
- Win32Exception.cs
- SignedPkcs7.cs
- TimeSpanStorage.cs
- PeerName.cs
- WebPartZone.cs
- EntityViewContainer.cs
- RepeaterItem.cs
- DoubleLink.cs
- sqlinternaltransaction.cs
- AutomationPropertyInfo.cs
- LowerCaseStringConverter.cs
- CheckBoxList.cs
- datacache.cs
- TextBoxBase.cs
- StreamGeometryContext.cs
- OleDbException.cs
- __ConsoleStream.cs
- ComponentEditorForm.cs
- ProcessThread.cs
- EarlyBoundInfo.cs
- MethodAccessException.cs
- DynamicPropertyHolder.cs
- OpenTypeLayout.cs
- StateInitializationDesigner.cs
- FontDifferentiator.cs
- StackOverflowException.cs
- UrlPropertyAttribute.cs
- SqlDataRecord.cs
- XmlDocumentFieldSchema.cs
- SeparatorAutomationPeer.cs
- TextEditorSelection.cs
- CodeMemberProperty.cs