Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CreateParams.cs
- ConnectorSelectionGlyph.cs
- XmlILConstructAnalyzer.cs
- AnnotationObservableCollection.cs
- PostBackTrigger.cs
- LabelDesigner.cs
- DocumentViewerConstants.cs
- AvtEvent.cs
- AdjustableArrowCap.cs
- DataTableNameHandler.cs
- WmlLabelAdapter.cs
- DataBindingExpressionBuilder.cs
- AuthorizationPolicyTypeElementCollection.cs
- PackageFilter.cs
- ObjectManager.cs
- UInt32Converter.cs
- SQLSingle.cs
- UrlMappingsSection.cs
- DispatcherEventArgs.cs
- IsolatedStorage.cs
- ToolStripItemGlyph.cs
- TableDesigner.cs
- UnitySerializationHolder.cs
- ObjectPersistData.cs
- _SSPIWrapper.cs
- VirtualPath.cs
- PageWrapper.cs
- ArcSegment.cs
- embossbitmapeffect.cs
- SqlDataSourceConnectionPanel.cs
- StreamWriter.cs
- DataKeyArray.cs
- WindowsContainer.cs
- PackageRelationshipCollection.cs
- QilFunction.cs
- PackageRelationship.cs
- Point3DCollection.cs
- DataSourceHelper.cs
- BitmapSizeOptions.cs
- ValueHandle.cs
- ExpressionConverter.cs
- DisplayNameAttribute.cs
- QuestionEventArgs.cs
- StatusBarDrawItemEvent.cs
- TreeViewImageIndexConverter.cs
- TextRangeAdaptor.cs
- CodeArrayIndexerExpression.cs
- CompositeControl.cs
- BamlStream.cs
- WmlMobileTextWriter.cs
- IgnoreFileBuildProvider.cs
- ClientUrlResolverWrapper.cs
- CharStorage.cs
- ParallelEnumerable.cs
- OverloadGroupAttribute.cs
- SafeSystemMetrics.cs
- TemplateAction.cs
- RectValueSerializer.cs
- AnnotationService.cs
- SystemFonts.cs
- PaperSource.cs
- TimeSpanValidatorAttribute.cs
- MemberDescriptor.cs
- StrokeSerializer.cs
- WorkflowDesignerColors.cs
- ConfigurationSectionGroupCollection.cs
- DictionarySectionHandler.cs
- XmlImplementation.cs
- SuppressMessageAttribute.cs
- ServiceRoute.cs
- ZipIOCentralDirectoryBlock.cs
- AutomationPeer.cs
- EventLogWatcher.cs
- MimeFormImporter.cs
- CanonicalXml.cs
- ScopeElementCollection.cs
- HtmlInputCheckBox.cs
- ExternalException.cs
- ProcessInputEventArgs.cs
- HotSpotCollection.cs
- OrderedEnumerableRowCollection.cs
- DiscardableAttribute.cs
- ParseChildrenAsPropertiesAttribute.cs
- ScrollEventArgs.cs
- EntityParameter.cs
- DeferredSelectedIndexReference.cs
- NotificationContext.cs
- ToolStripCollectionEditor.cs
- SQlBooleanStorage.cs
- ToolStripItemRenderEventArgs.cs
- TransformGroup.cs
- OracleConnectionStringBuilder.cs
- DataGridViewRowStateChangedEventArgs.cs
- OperandQuery.cs
- WebSysDisplayNameAttribute.cs
- SplitterPanel.cs
- RedBlackList.cs
- StringDictionary.cs
- RealizationDrawingContextWalker.cs
- ThreadAttributes.cs