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
- LineGeometry.cs
- WindowsTooltip.cs
- DataPagerField.cs
- TableAutomationPeer.cs
- TreeViewImageIndexConverter.cs
- ResourceReferenceExpression.cs
- DiscoveryClientProtocol.cs
- DoubleLink.cs
- BuildProviderAppliesToAttribute.cs
- BuildProviderUtils.cs
- Style.cs
- TypeConverterHelper.cs
- CriticalExceptions.cs
- ResolveResponseInfo.cs
- XmlAutoDetectWriter.cs
- PrePostDescendentsWalker.cs
- DecoderNLS.cs
- ProxyGenerationError.cs
- HtmlImage.cs
- ServiceInfo.cs
- XmlAnyElementAttribute.cs
- ObjectPropertyMapping.cs
- NavigationHelper.cs
- SerialPort.cs
- SelectionHighlightInfo.cs
- ChildTable.cs
- DirectoryNotFoundException.cs
- Keyboard.cs
- TextBoxBase.cs
- BinaryFormatterWriter.cs
- CodeBlockBuilder.cs
- Perspective.cs
- WebPartActionVerb.cs
- CodeNamespace.cs
- ResourcePermissionBaseEntry.cs
- PolicyStatement.cs
- ProviderBase.cs
- BitSet.cs
- CompletedAsyncResult.cs
- ClientFormsIdentity.cs
- SettingsContext.cs
- MissingMemberException.cs
- ListBox.cs
- SByteStorage.cs
- FloaterBaseParagraph.cs
- RegisteredHiddenField.cs
- ListViewTableRow.cs
- NonClientArea.cs
- XmlEncoding.cs
- ServiceHostingEnvironmentSection.cs
- DataDocumentXPathNavigator.cs
- WinInetCache.cs
- SafeSystemMetrics.cs
- DataRelation.cs
- BooleanFunctions.cs
- WindowsListViewScroll.cs
- ObjectViewListener.cs
- XamlToRtfWriter.cs
- ExponentialEase.cs
- LoginView.cs
- MasterPage.cs
- WebBrowserSiteBase.cs
- ElementNotAvailableException.cs
- HostingEnvironmentWrapper.cs
- TypeGenericEnumerableViewSchema.cs
- StringConverter.cs
- QueryExpr.cs
- CqlQuery.cs
- CodeGenerator.cs
- HttpListener.cs
- PhysicalAddress.cs
- WebHeaderCollection.cs
- AutomationPropertyInfo.cs
- CollectionBase.cs
- ExtendedProperty.cs
- ZoomPercentageConverter.cs
- OuterGlowBitmapEffect.cs
- Odbc32.cs
- SynchronizationHandlesCodeDomSerializer.cs
- ObjectDataSource.cs
- safelink.cs
- DirectoryRedirect.cs
- CustomAttribute.cs
- TouchesCapturedWithinProperty.cs
- QilChoice.cs
- CssClassPropertyAttribute.cs
- TableLayoutRowStyleCollection.cs
- PenCursorManager.cs
- NextPreviousPagerField.cs
- Assert.cs
- DataGridColumnsPage.cs
- BufferedGenericXmlSecurityToken.cs
- Rectangle.cs
- PropertyValue.cs
- FontSourceCollection.cs
- CookielessHelper.cs
- ToolboxItemFilterAttribute.cs
- MediaSystem.cs
- HtmlEmptyTagControlBuilder.cs
- AnnouncementDispatcherAsyncResult.cs