Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- Funcletizer.cs
- DefaultObjectMappingItemCollection.cs
- PasswordTextNavigator.cs
- OleDbPermission.cs
- WebScriptMetadataFormatter.cs
- Interlocked.cs
- CodeRemoveEventStatement.cs
- PathFigureCollection.cs
- ServiceNameElement.cs
- mediapermission.cs
- ToolStripControlHost.cs
- BitmapEffectDrawingContent.cs
- WindowsAuthenticationEventArgs.cs
- XpsThumbnail.cs
- SafeArrayRankMismatchException.cs
- ResXResourceSet.cs
- ContainerParaClient.cs
- Internal.cs
- XhtmlTextWriter.cs
- SystemSounds.cs
- WebHttpDispatchOperationSelector.cs
- SlipBehavior.cs
- ListItem.cs
- CustomCategoryAttribute.cs
- GPRECTF.cs
- TextBoxRenderer.cs
- TabItem.cs
- Hyperlink.cs
- AbsoluteQuery.cs
- BaseProcessProtocolHandler.cs
- DataServiceClientException.cs
- TrackingStringDictionary.cs
- Dump.cs
- XmlDataDocument.cs
- DesignerAdapterUtil.cs
- SafeHandles.cs
- IteratorFilter.cs
- DataPagerFieldCollection.cs
- RightNameExpirationInfoPair.cs
- NativeMethods.cs
- InternalSendMessage.cs
- XsdCachingReader.cs
- BlobPersonalizationState.cs
- MsmqIntegrationProcessProtocolHandler.cs
- WriterOutput.cs
- QilXmlReader.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- XPathNodePointer.cs
- webclient.cs
- KeyTimeConverter.cs
- HttpRequest.cs
- XPathExpr.cs
- PixelFormat.cs
- DataControlFieldCell.cs
- KoreanLunisolarCalendar.cs
- Misc.cs
- CapiHashAlgorithm.cs
- LocalizationComments.cs
- Application.cs
- RemotingConfigParser.cs
- CodeGenerator.cs
- FaultImportOptions.cs
- PieceNameHelper.cs
- ItemContainerGenerator.cs
- XmlC14NWriter.cs
- TaiwanCalendar.cs
- ComponentRenameEvent.cs
- OdbcEnvironmentHandle.cs
- MemoryStream.cs
- ListBoxChrome.cs
- SqlConnectionPoolGroupProviderInfo.cs
- HostingEnvironmentSection.cs
- TypeConverterAttribute.cs
- DotExpr.cs
- SafeCoTaskMem.cs
- PageWrapper.cs
- DocumentViewerConstants.cs
- X509Utils.cs
- ObjectToIdCache.cs
- Vector3DValueSerializer.cs
- QueueException.cs
- CodeDomSerializerException.cs
- SQLDouble.cs
- CodeDomLoader.cs
- MissingMemberException.cs
- SiteMapDataSourceView.cs
- ListViewItemSelectionChangedEvent.cs
- ResourceProviderFactory.cs
- RegionInfo.cs
- VectorCollection.cs
- HttpGetClientProtocol.cs
- BrowsableAttribute.cs
- XsltLoader.cs
- WindowsSpinner.cs
- NavigationWindow.cs
- MediaElementAutomationPeer.cs
- DataGridViewComboBoxEditingControl.cs
- SecurityCriticalDataForSet.cs
- ModelPropertyDescriptor.cs
- DurableMessageDispatchInspector.cs