Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / Threading / DispatcherFrame.cs / 1305600 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataListItem.cs
- ScriptReferenceEventArgs.cs
- UnmanagedMemoryStreamWrapper.cs
- IApplicationTrustManager.cs
- x509store.cs
- Converter.cs
- OleDbError.cs
- StringSorter.cs
- ImportCatalogPart.cs
- Point3DAnimation.cs
- TTSEngineTypes.cs
- OdbcDataReader.cs
- Function.cs
- LicenseProviderAttribute.cs
- HijriCalendar.cs
- mda.cs
- LinqExpressionNormalizer.cs
- WebPartEditorApplyVerb.cs
- PcmConverter.cs
- TopClause.cs
- TreeNodeBinding.cs
- DockPatternIdentifiers.cs
- SystemTcpConnection.cs
- GiveFeedbackEventArgs.cs
- ObjectDataSourceMethodEventArgs.cs
- WebPartConnectionCollection.cs
- DragStartedEventArgs.cs
- BufferedWebEventProvider.cs
- CaretElement.cs
- AspNetHostingPermission.cs
- DataMisalignedException.cs
- MouseWheelEventArgs.cs
- Solver.cs
- DrawItemEvent.cs
- ElapsedEventArgs.cs
- EFAssociationProvider.cs
- TextTreeNode.cs
- PersonalizationProvider.cs
- StatusBarItem.cs
- TTSEvent.cs
- PathSegment.cs
- HtmlWindow.cs
- CompiledRegexRunner.cs
- Rijndael.cs
- PageCache.cs
- UInt32Converter.cs
- QueryCacheEntry.cs
- SingleQueryOperator.cs
- UnicastIPAddressInformationCollection.cs
- XmlBuffer.cs
- HTTPAPI_VERSION.cs
- ParserOptions.cs
- StringSource.cs
- FixedPageProcessor.cs
- WSSecurityPolicy.cs
- DataGridViewSortCompareEventArgs.cs
- ASCIIEncoding.cs
- DialogResultConverter.cs
- DataSet.cs
- InternalResources.cs
- OleDbReferenceCollection.cs
- ColorDialog.cs
- AssemblyName.cs
- ArgumentValue.cs
- ComponentEditorForm.cs
- PropertyDescriptorCollection.cs
- HtmlInputImage.cs
- DateTimeUtil.cs
- Filter.cs
- ErrorFormatter.cs
- SystemIPv4InterfaceProperties.cs
- RegexFCD.cs
- FlowDocumentPageViewerAutomationPeer.cs
- Menu.cs
- ZipIOCentralDirectoryBlock.cs
- ShaderEffect.cs
- ZoneIdentityPermission.cs
- SynchronizedPool.cs
- HealthMonitoringSection.cs
- NameValuePermission.cs
- AccessText.cs
- FontSourceCollection.cs
- URLString.cs
- CompressEmulationStream.cs
- Grid.cs
- ResourceManager.cs
- WebPartConnectionsConfigureVerb.cs
- InputScopeManager.cs
- DescriptionAttribute.cs
- CursorConverter.cs
- AccessKeyManager.cs
- TextTrailingCharacterEllipsis.cs
- SafeViewOfFileHandle.cs
- ProtectedConfiguration.cs
- EmptyEnumerator.cs
- RelationshipEndMember.cs
- DrawingContext.cs
- AuthenticationManager.cs
- SamlDelegatingWriter.cs
- BitVec.cs