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
- CharEnumerator.cs
- Misc.cs
- DynamicDataResources.Designer.cs
- SignatureResourceHelper.cs
- EmbeddedMailObject.cs
- Executor.cs
- SoapClientProtocol.cs
- RequestCache.cs
- FileSystemWatcher.cs
- RolePrincipal.cs
- FunctionParameter.cs
- ProfilePropertySettingsCollection.cs
- xmlfixedPageInfo.cs
- AuthenticationService.cs
- GraphicsPathIterator.cs
- FileLoadException.cs
- DbCommandTree.cs
- CodeDirectiveCollection.cs
- FileVersionInfo.cs
- StreamingContext.cs
- BitmapEffect.cs
- AnnotationResourceChangedEventArgs.cs
- Encoder.cs
- ValidationEventArgs.cs
- SqlBinder.cs
- _AutoWebProxyScriptHelper.cs
- HopperCache.cs
- DefaultValueMapping.cs
- CompModSwitches.cs
- DataError.cs
- PlainXmlWriter.cs
- IisTraceWebEventProvider.cs
- DbReferenceCollection.cs
- ContainerControl.cs
- MenuAutoFormat.cs
- TypedReference.cs
- CharConverter.cs
- EntityParameter.cs
- DataGridColumnDropSeparator.cs
- ServicesExceptionNotHandledEventArgs.cs
- Point.cs
- NotifyCollectionChangedEventArgs.cs
- ResXResourceWriter.cs
- BroadcastEventHelper.cs
- LinkUtilities.cs
- ToolStripOverflow.cs
- JoinSymbol.cs
- DotExpr.cs
- PrtCap_Reader.cs
- CompositeActivityMarkupSerializer.cs
- COM2PropertyDescriptor.cs
- ModifierKeysConverter.cs
- MTConfigUtil.cs
- CopyNodeSetAction.cs
- WindowsTokenRoleProvider.cs
- CodeIndexerExpression.cs
- RadialGradientBrush.cs
- ExtendedPropertyCollection.cs
- ProfilePropertyNameValidator.cs
- PersonalizationProvider.cs
- XmlAttributeOverrides.cs
- ColumnClickEvent.cs
- TypeBuilder.cs
- TimeSpanOrInfiniteConverter.cs
- ConfigsHelper.cs
- RenderContext.cs
- FileNotFoundException.cs
- Vector3DCollection.cs
- EpmSourceTree.cs
- SrgsText.cs
- DWriteFactory.cs
- SessionStateItemCollection.cs
- AppManager.cs
- SerializableAttribute.cs
- QueryCacheEntry.cs
- ChannelAcceptor.cs
- ConfigXmlComment.cs
- Evidence.cs
- ToolTipService.cs
- webbrowsersite.cs
- HttpCapabilitiesEvaluator.cs
- BitVector32.cs
- PersonalizationEntry.cs
- WeakEventTable.cs
- XPathNodeList.cs
- LinkLabel.cs
- LassoHelper.cs
- MultipartIdentifier.cs
- CaseStatement.cs
- PackagePart.cs
- Selection.cs
- FilterQuery.cs
- DataSourceGroupCollection.cs
- FontTypeConverter.cs
- FilterRepeater.cs
- ResizeGrip.cs
- SiteMapNodeCollection.cs
- DataServiceBehavior.cs
- CompilationPass2TaskInternal.cs
- UnsafeNativeMethods.cs