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
- Empty.cs
- SafeFileMappingHandle.cs
- ConfigurationSection.cs
- GeneralTransformCollection.cs
- WSTransactionSection.cs
- ItemDragEvent.cs
- EntityFrameworkVersions.cs
- IncrementalReadDecoders.cs
- ZoneMembershipCondition.cs
- FrugalList.cs
- LayoutEvent.cs
- FontConverter.cs
- ToolTipAutomationPeer.cs
- ToolStripGripRenderEventArgs.cs
- DocumentOrderComparer.cs
- CacheMemory.cs
- XPathAxisIterator.cs
- RC2.cs
- PathGradientBrush.cs
- SqlConnectionFactory.cs
- SiteIdentityPermission.cs
- HwndHost.cs
- CommonObjectSecurity.cs
- DecimalAnimationUsingKeyFrames.cs
- SID.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- BaseDataBoundControl.cs
- IteratorDescriptor.cs
- WebPartCloseVerb.cs
- XmlIlGenerator.cs
- CSharpCodeProvider.cs
- TextBoxLine.cs
- SqlNode.cs
- OpCellTreeNode.cs
- IdentityHolder.cs
- CounterCreationData.cs
- InputManager.cs
- GridViewDeletedEventArgs.cs
- WeakEventManager.cs
- AssemblyAttributes.cs
- QueryCacheManager.cs
- ServiceCredentialsSecurityTokenManager.cs
- ProjectionPath.cs
- InvokeMethodActivity.cs
- XamlStyleSerializer.cs
- BindingExpressionBase.cs
- AutomationEventArgs.cs
- InheritablePropertyChangeInfo.cs
- SafeMILHandle.cs
- VectorCollectionValueSerializer.cs
- Panel.cs
- DataGridCaption.cs
- InputScopeManager.cs
- PageCatalogPart.cs
- GridViewRowEventArgs.cs
- EntityDesignerBuildProvider.cs
- WindowsMenu.cs
- CompensateDesigner.cs
- XmlAnyAttributeAttribute.cs
- TrackingServices.cs
- PageAsyncTask.cs
- BaseTemplateBuildProvider.cs
- ResetableIterator.cs
- UserControl.cs
- XmlQueryRuntime.cs
- MetadataFile.cs
- Missing.cs
- QilVisitor.cs
- AdornerLayer.cs
- WorkerRequest.cs
- ListItemViewControl.cs
- OleServicesContext.cs
- ButtonBaseAdapter.cs
- XmlSchemaAll.cs
- AttributeAction.cs
- OrderToken.cs
- PropertyDescriptorCollection.cs
- TextBox.cs
- SchemaDeclBase.cs
- NotCondition.cs
- WmpBitmapDecoder.cs
- WebWorkflowRole.cs
- Color.cs
- PrinterSettings.cs
- RuntimeConfig.cs
- ListBase.cs
- Rect.cs
- SHA1Cng.cs
- FileDialog_Vista.cs
- CellPartitioner.cs
- ServicePointManagerElement.cs
- XmlTextAttribute.cs
- HttpChannelListener.cs
- oledbmetadatacollectionnames.cs
- SchemaReference.cs
- ScrollEvent.cs
- MessageQueueKey.cs
- ChannelBinding.cs
- EncoderReplacementFallback.cs
- OpenTypeMethods.cs