Code:
/ 4.0 / 4.0 / 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. 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
- ClientProxyGenerator.cs
- Collection.cs
- SqlDataSourceEnumerator.cs
- AppDomainUnloadedException.cs
- LocalizableResourceBuilder.cs
- TableLayoutPanelBehavior.cs
- MethodSignatureGenerator.cs
- SliderAutomationPeer.cs
- WebUtility.cs
- SiteMapSection.cs
- TargetControlTypeCache.cs
- MessageFilterTable.cs
- DynamicMethod.cs
- EventToken.cs
- EncoderParameter.cs
- RowVisual.cs
- AssemblyAttributesGoHere.cs
- XhtmlBasicControlAdapter.cs
- Vector3DCollection.cs
- SqlWriter.cs
- InvalidFilterCriteriaException.cs
- StorageSetMapping.cs
- MenuItem.cs
- StateManagedCollection.cs
- ImageSource.cs
- ListViewInsertEventArgs.cs
- RepeatButton.cs
- DependencyObject.cs
- BinarySerializer.cs
- Object.cs
- FontInfo.cs
- DataGridViewUtilities.cs
- SourceInterpreter.cs
- PropertyEmitter.cs
- CheckBoxFlatAdapter.cs
- ConfigurationLocationCollection.cs
- SecureEnvironment.cs
- XmlNodeReader.cs
- HttpGetClientProtocol.cs
- IDQuery.cs
- WebPartCollection.cs
- BuildTopDownAttribute.cs
- AttachmentService.cs
- BamlResourceDeserializer.cs
- BuildProviderAppliesToAttribute.cs
- DeclarationUpdate.cs
- DispatcherHooks.cs
- DataServiceQuery.cs
- WebPartConnectionsDisconnectVerb.cs
- LayoutUtils.cs
- MemberRelationshipService.cs
- panel.cs
- StartUpEventArgs.cs
- ListDictionary.cs
- RootBrowserWindowProxy.cs
- CommonXSendMessage.cs
- cookiecontainer.cs
- CodeSubDirectoriesCollection.cs
- SessionEndingEventArgs.cs
- QueryOperationResponseOfT.cs
- RenameRuleObjectDialog.cs
- XmlMapping.cs
- SqlFunctions.cs
- MediaSystem.cs
- ObjectListCommand.cs
- ShortcutKeysEditor.cs
- BehaviorEditorPart.cs
- ClosableStream.cs
- AvTraceFormat.cs
- SqlDataSourceCache.cs
- ServiceMetadataBehavior.cs
- SqlProcedureAttribute.cs
- XmlSchemaDocumentation.cs
- InstanceNormalEvent.cs
- PolicyStatement.cs
- PackageProperties.cs
- SafeRegistryKey.cs
- AccessDataSourceWizardForm.cs
- Form.cs
- DataRowChangeEvent.cs
- EditingCommands.cs
- CaseExpr.cs
- _AutoWebProxyScriptHelper.cs
- DataSourceHelper.cs
- AssemblyFilter.cs
- X509Chain.cs
- XNodeSchemaApplier.cs
- Color.cs
- RetrieveVirtualItemEventArgs.cs
- URLEditor.cs
- BindableTemplateBuilder.cs
- WpfGeneratedKnownProperties.cs
- SecurityMode.cs
- BinaryMessageEncodingElement.cs
- AsymmetricKeyExchangeDeformatter.cs
- SystemWebExtensionsSectionGroup.cs
- ControlBuilderAttribute.cs
- StyleBamlRecordReader.cs
- Crc32.cs
- BitmapEffectInput.cs