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
- SqlCommandBuilder.cs
- HtmlControlPersistable.cs
- ApplicationId.cs
- AxisAngleRotation3D.cs
- RtfControlWordInfo.cs
- BasicKeyConstraint.cs
- DataGridViewCellFormattingEventArgs.cs
- DataSourceView.cs
- ListBoxAutomationPeer.cs
- RolePrincipal.cs
- DefaultPropertyAttribute.cs
- ExtendedPropertyCollection.cs
- CompilerGeneratedAttribute.cs
- SmiTypedGetterSetter.cs
- GlobalEventManager.cs
- smtppermission.cs
- Menu.cs
- DesignSurfaceEvent.cs
- SqlRecordBuffer.cs
- StrokeCollection.cs
- TrustLevel.cs
- ButtonRenderer.cs
- Helper.cs
- ThreadSafeMessageFilterTable.cs
- SessionStateContainer.cs
- SecurityTokenValidationException.cs
- Cursor.cs
- ComboBoxAutomationPeer.cs
- IgnoreFlushAndCloseStream.cs
- Pair.cs
- Brush.cs
- InputLanguageCollection.cs
- ClientFactory.cs
- RequestStatusBarUpdateEventArgs.cs
- ThicknessAnimationUsingKeyFrames.cs
- WindowsFormsSynchronizationContext.cs
- Rectangle.cs
- AppearanceEditorPart.cs
- sqlmetadatafactory.cs
- Camera.cs
- SaveFileDialog.cs
- ItemCheckedEvent.cs
- CultureInfo.cs
- EntityDataSourceContextCreatingEventArgs.cs
- BaseParser.cs
- FixUp.cs
- GridItemCollection.cs
- WindowsListViewScroll.cs
- SimpleFieldTemplateFactory.cs
- SendActivityDesignerTheme.cs
- Preprocessor.cs
- CookielessData.cs
- ResourceBinder.cs
- JpegBitmapEncoder.cs
- LocatorPart.cs
- WebUtil.cs
- XmlSchemaSimpleTypeUnion.cs
- ImagingCache.cs
- Codec.cs
- OrderedDictionaryStateHelper.cs
- UnmanagedMemoryStream.cs
- mediaeventargs.cs
- HMACSHA1.cs
- ParallelSeparator.xaml.cs
- DefinitionBase.cs
- SetStateDesigner.cs
- XmlSchemaAttributeGroup.cs
- SmiContextFactory.cs
- Camera.cs
- RequestStatusBarUpdateEventArgs.cs
- VectorAnimation.cs
- GiveFeedbackEventArgs.cs
- RectangleF.cs
- DataTableCollection.cs
- VirtualDirectoryMappingCollection.cs
- Vector.cs
- FixedSOMTableRow.cs
- HashJoinQueryOperatorEnumerator.cs
- CharConverter.cs
- CommandValueSerializer.cs
- QilReplaceVisitor.cs
- XpsSerializerFactory.cs
- Properties.cs
- TaiwanCalendar.cs
- ProxyElement.cs
- MultiTrigger.cs
- TransformerTypeCollection.cs
- DrawListViewColumnHeaderEventArgs.cs
- RegexCaptureCollection.cs
- ScriptReferenceBase.cs
- AppearanceEditorPart.cs
- MimeMultiPart.cs
- LightweightCodeGenerator.cs
- PauseStoryboard.cs
- PropertyEntry.cs
- Track.cs
- Line.cs
- MetadataExporter.cs
- DataGridViewRowConverter.cs
- basenumberconverter.cs