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
- WebPartsPersonalization.cs
- HttpListenerTimeoutManager.cs
- DataSourceComponent.cs
- XmlTextEncoder.cs
- DependencyPropertyKind.cs
- HostProtectionException.cs
- LayoutTable.cs
- StructuralCache.cs
- MatrixTransform3D.cs
- DesignerAutoFormatCollection.cs
- TraceHwndHost.cs
- WindowsAuthenticationModule.cs
- ComboBox.cs
- CodeDefaultValueExpression.cs
- TypefaceMetricsCache.cs
- ItemChangedEventArgs.cs
- AssociationTypeEmitter.cs
- XmlResolver.cs
- ListParaClient.cs
- InternalPermissions.cs
- Base64Encoder.cs
- PassportAuthenticationEventArgs.cs
- WebChannelFactory.cs
- BitmapFrame.cs
- CollectionDataContract.cs
- ComponentConverter.cs
- BaseDataList.cs
- SmtpReplyReaderFactory.cs
- RectAnimationClockResource.cs
- MethodExecutor.cs
- TemplatePartAttribute.cs
- HttpServerVarsCollection.cs
- DataBindingCollection.cs
- Debug.cs
- ObjectSecurityT.cs
- SettingsPropertyIsReadOnlyException.cs
- SubMenuStyleCollection.cs
- COM2Properties.cs
- SafeNativeMethods.cs
- EditorAttribute.cs
- MultiSelector.cs
- EastAsianLunisolarCalendar.cs
- FullTrustAssembly.cs
- __FastResourceComparer.cs
- DataGridViewMethods.cs
- Frame.cs
- ReadOnlyCollection.cs
- ToolBarOverflowPanel.cs
- SID.cs
- WindowsFormsSynchronizationContext.cs
- DetailsViewInsertedEventArgs.cs
- StrongNameIdentityPermission.cs
- SqlCacheDependencyDatabaseCollection.cs
- Variable.cs
- FormViewCommandEventArgs.cs
- MsmqOutputSessionChannel.cs
- MobilePage.cs
- XmlSchemaInfo.cs
- Char.cs
- OrderByBuilder.cs
- PreviewPageInfo.cs
- X509CertificateRecipientClientCredential.cs
- EntityDataSourceStatementEditor.cs
- ConsumerConnectionPoint.cs
- ExpressionBuilder.cs
- XmlAttributeCollection.cs
- WindowsStatic.cs
- Clipboard.cs
- GlyphShapingProperties.cs
- GridItemProviderWrapper.cs
- DataGridViewCellStyleBuilderDialog.cs
- EditorPart.cs
- AddIn.cs
- SchemaTypeEmitter.cs
- linebase.cs
- _NetworkingPerfCounters.cs
- BindUriHelper.cs
- FileSecurity.cs
- PopOutPanel.cs
- Convert.cs
- XmlSchemaRedefine.cs
- SqlConnectionString.cs
- SHA256Managed.cs
- SizeLimitedCache.cs
- cookiecontainer.cs
- AppSettings.cs
- CapabilitiesState.cs
- SafePEFileHandle.cs
- PropertyIDSet.cs
- RenameRuleObjectDialog.Designer.cs
- ProfileSettingsCollection.cs
- XmlILAnnotation.cs
- FileSystemInfo.cs
- PageRouteHandler.cs
- X509AsymmetricSecurityKey.cs
- WebSysDescriptionAttribute.cs
- Literal.cs
- GcSettings.cs
- TokenizerHelper.cs
- ChildTable.cs