Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / Threading / DispatcherFrame.cs / 1305600 / 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
- Renderer.cs
- StylusPoint.cs
- ActiveXContainer.cs
- UseLicense.cs
- PropertyChangedEventManager.cs
- HyperLinkDesigner.cs
- ResourceExpressionEditor.cs
- AdRotatorDesigner.cs
- _HTTPDateParse.cs
- ByteViewer.cs
- PreservationFileReader.cs
- PropertyGeneratedEventArgs.cs
- Constraint.cs
- BinHexEncoder.cs
- NTAccount.cs
- ErrorLog.cs
- MarkedHighlightComponent.cs
- TreeWalkHelper.cs
- ContextStack.cs
- ClockGroup.cs
- ComponentDispatcher.cs
- figurelengthconverter.cs
- DataGridViewColumnStateChangedEventArgs.cs
- DatePickerAutomationPeer.cs
- ProfileEventArgs.cs
- AccessControlEntry.cs
- EdmMember.cs
- RevocationPoint.cs
- PagesSection.cs
- EntityDataSourceUtil.cs
- Compiler.cs
- EntityContainerEntitySet.cs
- QueryConverter.cs
- ToolBar.cs
- SessionKeyExpiredException.cs
- StyleXamlTreeBuilder.cs
- TagNameToTypeMapper.cs
- TdsParserSessionPool.cs
- XPathNavigatorReader.cs
- DataBindingHandlerAttribute.cs
- LayoutEvent.cs
- SqlUserDefinedAggregateAttribute.cs
- InputScopeAttribute.cs
- UniqueConstraint.cs
- XamlReader.cs
- Converter.cs
- WriteableBitmap.cs
- XmlSchemaSimpleContentRestriction.cs
- UserPersonalizationStateInfo.cs
- AncestorChangedEventArgs.cs
- DefaultMemberAttribute.cs
- ConfigXmlCDataSection.cs
- RegexCharClass.cs
- DefaultValueAttribute.cs
- RoleManagerModule.cs
- IIS7UserPrincipal.cs
- Selector.cs
- PagerSettings.cs
- WindowShowOrOpenTracker.cs
- RoleExceptions.cs
- BitmapInitialize.cs
- CodeSnippetCompileUnit.cs
- DataGridViewSelectedCellCollection.cs
- ColumnResizeAdorner.cs
- SettingsContext.cs
- CollectionChangedEventManager.cs
- DatePicker.cs
- HelpProvider.cs
- CodeConditionStatement.cs
- TransportSecurityBindingElement.cs
- Expander.cs
- Vector3D.cs
- EdmComplexTypeAttribute.cs
- LoadWorkflowCommand.cs
- securitycriticaldata.cs
- OneOfScalarConst.cs
- WebServiceHost.cs
- RawUIStateInputReport.cs
- LambdaCompiler.Logical.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- SafeHandle.cs
- CodeNamespaceCollection.cs
- SamlSecurityToken.cs
- Certificate.cs
- TextDecoration.cs
- ClientBase.cs
- unsafenativemethodstextservices.cs
- ExpressionPrefixAttribute.cs
- ProviderConnectionPointCollection.cs
- ConnectionStringEditor.cs
- IconHelper.cs
- TemplateColumn.cs
- ColorConverter.cs
- UnsafeNativeMethods.cs
- ChangePassword.cs
- LocalFileSettingsProvider.cs
- HttpCookie.cs
- LateBoundBitmapDecoder.cs
- SafeFileHandle.cs
- WasHttpHandlersInstallComponent.cs