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
- CodeObjectCreateExpression.cs
- EntityParameterCollection.cs
- Help.cs
- ThreadAttributes.cs
- ProcessInfo.cs
- LOSFormatter.cs
- Menu.cs
- URLAttribute.cs
- connectionpool.cs
- VectorValueSerializer.cs
- FixedTextSelectionProcessor.cs
- GroupBox.cs
- HttpWriter.cs
- SQLInt16.cs
- PagedDataSource.cs
- UnsafeNativeMethods.cs
- ResourceDescriptionAttribute.cs
- ImageDesigner.cs
- MemoryMappedFile.cs
- MetadataItemEmitter.cs
- ObjectDataSourceEventArgs.cs
- EndpointAddressAugust2004.cs
- Timeline.cs
- SyndicationSerializer.cs
- XsltFunctions.cs
- log.cs
- DragDrop.cs
- ComUdtElement.cs
- ComponentRenameEvent.cs
- DefaultSection.cs
- LineBreak.cs
- PeerHelpers.cs
- MaskedTextBoxDesignerActionList.cs
- PrintDialogDesigner.cs
- ObjectDataSourceFilteringEventArgs.cs
- NativeRecognizer.cs
- XsltSettings.cs
- GradientBrush.cs
- HttpVersion.cs
- PropertyGridCommands.cs
- GridView.cs
- SecurityKeyIdentifierClause.cs
- ListViewHitTestInfo.cs
- SignedXml.cs
- TextBreakpoint.cs
- RichTextBox.cs
- ReadOnlyObservableCollection.cs
- GeometryHitTestParameters.cs
- ILGenerator.cs
- CookieParameter.cs
- ThousandthOfEmRealPoints.cs
- AccessDataSourceView.cs
- PersonalizationProviderHelper.cs
- PersianCalendar.cs
- CollectionView.cs
- ServiceDesigner.cs
- RefType.cs
- XPathBinder.cs
- NamedPermissionSet.cs
- ListDictionaryInternal.cs
- Vector3D.cs
- ColorAnimationBase.cs
- FormsAuthenticationEventArgs.cs
- EntityStoreSchemaGenerator.cs
- CorruptingExceptionCommon.cs
- FontClient.cs
- CodeMethodReturnStatement.cs
- SHA512Managed.cs
- LocatorManager.cs
- TextServicesContext.cs
- PixelFormats.cs
- IgnoreFileBuildProvider.cs
- CodeMemberField.cs
- WmpBitmapDecoder.cs
- NullableLongSumAggregationOperator.cs
- ObjectConverter.cs
- CompositeTypefaceMetrics.cs
- ObjectAnimationBase.cs
- ChtmlSelectionListAdapter.cs
- Directory.cs
- StreamWithDictionary.cs
- LogicalMethodInfo.cs
- XmlToDatasetMap.cs
- DataError.cs
- TrackPoint.cs
- ResourceDescriptionAttribute.cs
- ScrollViewer.cs
- TextModifier.cs
- HwndSubclass.cs
- AuthenticatingEventArgs.cs
- ReadOnlyDictionary.cs
- ComPersistableTypeElementCollection.cs
- EmissiveMaterial.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- ChangeToolStripParentVerb.cs
- NativeMethods.cs
- NamedPipeTransportManager.cs
- CryptoStream.cs
- WebPartVerbsEventArgs.cs
- SqlErrorCollection.cs