Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewDesigner.cs
- BuildProviderAppliesToAttribute.cs
- XPathMultyIterator.cs
- MulticastOption.cs
- PasswordTextContainer.cs
- Globals.cs
- Events.cs
- QueryLifecycle.cs
- FixedPageStructure.cs
- OpacityConverter.cs
- PageSettings.cs
- ClientFormsIdentity.cs
- SqlFormatter.cs
- CmsInterop.cs
- SubMenuStyle.cs
- base64Transforms.cs
- ComponentDispatcher.cs
- AnnotationHelper.cs
- XmlSchemaNotation.cs
- DesignTimeData.cs
- XamlReaderHelper.cs
- Mutex.cs
- MediaContextNotificationWindow.cs
- Content.cs
- CompositeFontParser.cs
- ConfigXmlText.cs
- ProviderIncompatibleException.cs
- DoubleAnimationClockResource.cs
- PropertyEntry.cs
- BitmapEffectOutputConnector.cs
- FloatAverageAggregationOperator.cs
- While.cs
- sqlinternaltransaction.cs
- CodeFieldReferenceExpression.cs
- CryptoConfig.cs
- AspCompat.cs
- EntityContainerEntitySetDefiningQuery.cs
- ControlPaint.cs
- SQLInt16Storage.cs
- WebConvert.cs
- FormsAuthenticationUserCollection.cs
- SecureUICommand.cs
- SchemaDeclBase.cs
- RbTree.cs
- DataConnectionHelper.cs
- Cursors.cs
- XmlSchemaComplexContentExtension.cs
- PolicyVersionConverter.cs
- ErrorRuntimeConfig.cs
- Viewport3DVisual.cs
- GlyphElement.cs
- ByteAnimationBase.cs
- WindowsListViewGroupHelper.cs
- ToolStrip.cs
- XmlNodeChangedEventArgs.cs
- MouseButton.cs
- UpdateManifestForBrowserApplication.cs
- CodeBinaryOperatorExpression.cs
- CodeStatementCollection.cs
- DataGridViewCellValidatingEventArgs.cs
- FixedSOMContainer.cs
- GradientSpreadMethodValidation.cs
- HttpHandlerActionCollection.cs
- ADMembershipUser.cs
- DependencyProperty.cs
- PriorityQueue.cs
- IPEndPoint.cs
- ByteAnimationBase.cs
- ClaimSet.cs
- LocalizedNameDescriptionPair.cs
- VisualStyleInformation.cs
- TemplateBindingExtension.cs
- TraceListeners.cs
- TreePrinter.cs
- ColumnResizeAdorner.cs
- UriParserTemplates.cs
- ExpandCollapseIsCheckedConverter.cs
- TraceFilter.cs
- EnumType.cs
- SiteMapPath.cs
- DataListCommandEventArgs.cs
- ConstructorNeedsTagAttribute.cs
- PeerCustomResolverSettings.cs
- VerificationAttribute.cs
- LogExtentCollection.cs
- InternalBase.cs
- InkCanvasAutomationPeer.cs
- WorkflowMarkupElementEventArgs.cs
- QilInvokeLateBound.cs
- MappedMetaModel.cs
- HotSpot.cs
- DataSvcMapFileSerializer.cs
- WorkerRequest.cs
- RunClient.cs
- ValidatingReaderNodeData.cs
- Matrix3DConverter.cs
- WebPartConnectVerb.cs
- latinshape.cs
- HTTPRemotingHandler.cs
- LinqDataSourceEditData.cs