Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ReversePositionQuery.cs
- HotSpot.cs
- MorphHelpers.cs
- BaseCodePageEncoding.cs
- SizeF.cs
- CellConstant.cs
- ProtocolsConfigurationEntry.cs
- StringSorter.cs
- ListViewSortEventArgs.cs
- WizardPanelChangingEventArgs.cs
- MobileControl.cs
- DrawingAttributesDefaultValueFactory.cs
- RijndaelManaged.cs
- XmlDocumentFragment.cs
- CollectionViewGroupRoot.cs
- TdsParameterSetter.cs
- AssemblyInfo.cs
- ColorConvertedBitmapExtension.cs
- ToolStripMenuItem.cs
- InternalDispatchObject.cs
- Vector.cs
- XmlChildNodes.cs
- SamlSecurityTokenAuthenticator.cs
- TextRenderingModeValidation.cs
- AssertUtility.cs
- ReferenceCountedObject.cs
- SmtpMail.cs
- HTMLTagNameToTypeMapper.cs
- EndpointNameMessageFilter.cs
- SortedSet.cs
- UTF7Encoding.cs
- DesignerTransaction.cs
- Metafile.cs
- ListManagerBindingsCollection.cs
- BufferBuilder.cs
- CachedBitmap.cs
- ManipulationDeltaEventArgs.cs
- XPathDescendantIterator.cs
- TdsRecordBufferSetter.cs
- HostVisual.cs
- ActivityDelegate.cs
- HeaderedItemsControl.cs
- RepeaterCommandEventArgs.cs
- InertiaRotationBehavior.cs
- ChildrenQuery.cs
- EnumType.cs
- Point3DKeyFrameCollection.cs
- XamlPoint3DCollectionSerializer.cs
- DetailsViewInsertEventArgs.cs
- DataGridViewImageColumn.cs
- RecordsAffectedEventArgs.cs
- COM2IDispatchConverter.cs
- PcmConverter.cs
- GridItemCollection.cs
- OverrideMode.cs
- X509WindowsSecurityToken.cs
- AgileSafeNativeMemoryHandle.cs
- DllHostInitializer.cs
- ModelUIElement3D.cs
- Light.cs
- TrackingCondition.cs
- listitem.cs
- EndPoint.cs
- JavaScriptObjectDeserializer.cs
- Math.cs
- FileEnumerator.cs
- EncodedStreamFactory.cs
- ElementsClipboardData.cs
- HeaderUtility.cs
- PlatformCulture.cs
- Size3D.cs
- ServiceOperationDetailViewControl.cs
- TextEffectCollection.cs
- XmlSchemaComplexContentExtension.cs
- XmlSchemaObjectTable.cs
- ToolStripDropDownClosingEventArgs.cs
- UpWmlPageAdapter.cs
- WorkflowWebHostingModule.cs
- IsolatedStorage.cs
- RegexCompilationInfo.cs
- OutputCacheProfileCollection.cs
- EntityClientCacheKey.cs
- EditorZone.cs
- BaseValidatorDesigner.cs
- GuidelineCollection.cs
- ObjectCloneHelper.cs
- HttpResponseInternalWrapper.cs
- TimeSpan.cs
- DependencyObject.cs
- SqlClientMetaDataCollectionNames.cs
- ToolStripDropTargetManager.cs
- SimplePropertyEntry.cs
- ContractListAdapter.cs
- Policy.cs
- XmlQueryRuntime.cs
- InOutArgumentConverter.cs
- SourceCollection.cs
- GroupQuery.cs
- PropertyExpression.cs
- UpdateManifestForBrowserApplication.cs