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
- ApplicationId.cs
- SrgsElement.cs
- DebuggerAttributes.cs
- ProxyHwnd.cs
- StreamInfo.cs
- NewExpression.cs
- XhtmlCssHandler.cs
- ContextMenuAutomationPeer.cs
- Scheduling.cs
- GridViewUpdatedEventArgs.cs
- ModifierKeysConverter.cs
- XmlIlTypeHelper.cs
- RuntimeEnvironment.cs
- ProtocolElement.cs
- ISO2022Encoding.cs
- SchemaElementDecl.cs
- PropertyStore.cs
- WsdlBuildProvider.cs
- WinInetCache.cs
- SynchronizedMessageSource.cs
- XmlBinaryReader.cs
- RuntimeResourceSet.cs
- RtfControls.cs
- CustomValidator.cs
- ObjectSet.cs
- OleDbTransaction.cs
- Item.cs
- ControlAdapter.cs
- FileSecurity.cs
- EUCJPEncoding.cs
- RequestQueryParser.cs
- DockPatternIdentifiers.cs
- RestHandlerFactory.cs
- ASCIIEncoding.cs
- HtmlControlPersistable.cs
- TabletDevice.cs
- Walker.cs
- Transactions.cs
- WebPageTraceListener.cs
- ScriptServiceAttribute.cs
- Buffer.cs
- X509WindowsSecurityToken.cs
- DataRecordObjectView.cs
- ConfigurationPermission.cs
- LicFileLicenseProvider.cs
- GridViewUpdateEventArgs.cs
- XPathMessageFilterTable.cs
- StickyNoteAnnotations.cs
- ToolStripItemRenderEventArgs.cs
- TypeDescriptionProvider.cs
- ToolStripItemGlyph.cs
- Membership.cs
- NonClientArea.cs
- MultiByteCodec.cs
- DataGridViewRowEventArgs.cs
- TTSEvent.cs
- ExpressionVisitor.cs
- StoryFragments.cs
- GridItemProviderWrapper.cs
- TemplateParser.cs
- CacheMemory.cs
- TreeViewItemAutomationPeer.cs
- FastEncoderWindow.cs
- MD5CryptoServiceProvider.cs
- HMACSHA384.cs
- WorkflowRuntimeSection.cs
- StringBuilder.cs
- AdCreatedEventArgs.cs
- CreateUserWizardAutoFormat.cs
- UniqueSet.cs
- UiaCoreProviderApi.cs
- WebServiceErrorEvent.cs
- SizeAnimationUsingKeyFrames.cs
- Pens.cs
- StackSpiller.Generated.cs
- DesignerContextDescriptor.cs
- DataSourceXmlElementAttribute.cs
- DataMemberFieldEditor.cs
- TextBoxAutoCompleteSourceConverter.cs
- ResourceCategoryAttribute.cs
- rsa.cs
- EditorPartCollection.cs
- GeneratedContractType.cs
- GeometryModel3D.cs
- HostDesigntimeLicenseContext.cs
- ResourceDictionaryCollection.cs
- XmlElementList.cs
- XamlFilter.cs
- CollectionTypeElement.cs
- InternalConfigEventArgs.cs
- ReferenceConverter.cs
- bindurihelper.cs
- DataSourceCacheDurationConverter.cs
- _DisconnectOverlappedAsyncResult.cs
- MembershipPasswordException.cs
- DbProviderFactories.cs
- _TimerThread.cs
- PrimaryKeyTypeConverter.cs
- PropertyBuilder.cs
- TranslateTransform3D.cs