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
- DataComponentMethodGenerator.cs
- AutomationProperties.cs
- AccessText.cs
- MimeMapping.cs
- CellQuery.cs
- RelationshipDetailsCollection.cs
- Input.cs
- DbParameterCollection.cs
- FrameworkReadOnlyPropertyMetadata.cs
- OuterGlowBitmapEffect.cs
- ActivityTypeCodeDomSerializer.cs
- RadioButtonBaseAdapter.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- MeasurementDCInfo.cs
- CodeTryCatchFinallyStatement.cs
- GridViewCommandEventArgs.cs
- Stream.cs
- Line.cs
- SharedStatics.cs
- SqlCachedBuffer.cs
- CaseStatement.cs
- SystemParameters.cs
- baseaxisquery.cs
- AttachedPropertiesService.cs
- ProgressChangedEventArgs.cs
- PackUriHelper.cs
- ConnectionPoolManager.cs
- EditorBrowsableAttribute.cs
- BindingsCollection.cs
- CellQuery.cs
- FocusChangedEventArgs.cs
- arc.cs
- FileDialog_Vista.cs
- HelloMessageApril2005.cs
- XmlSerializerFactory.cs
- DependencyPropertyChangedEventArgs.cs
- ReadOnlyActivityGlyph.cs
- DropSourceBehavior.cs
- MsmqTransportSecurityElement.cs
- TextureBrush.cs
- ExecutedRoutedEventArgs.cs
- DebuggerAttributes.cs
- FormatterServices.cs
- smtpconnection.cs
- XmlSignificantWhitespace.cs
- BitmapEffectRenderDataResource.cs
- DialogWindow.cs
- SortedList.cs
- VisualStateManager.cs
- ExtensionWindowResizeGrip.cs
- TextCompositionEventArgs.cs
- RightsManagementEncryptedStream.cs
- LayoutInformation.cs
- WebServicesSection.cs
- DurationConverter.cs
- XmlReflectionImporter.cs
- QuaternionRotation3D.cs
- HtmlInputRadioButton.cs
- DesignSurface.cs
- XsdDataContractImporter.cs
- SourceLineInfo.cs
- SafeTimerHandle.cs
- DataSourceComponent.cs
- UiaCoreTypesApi.cs
- UserControlCodeDomTreeGenerator.cs
- SystemTcpStatistics.cs
- configsystem.cs
- Symbol.cs
- FileDialog_Vista.cs
- TextLine.cs
- ChangesetResponse.cs
- HttpResponseHeader.cs
- GifBitmapEncoder.cs
- DataTableReader.cs
- Comparer.cs
- CoreSwitches.cs
- SchemaCollectionPreprocessor.cs
- BindingElementExtensionElement.cs
- FlowDocumentReader.cs
- DiagnosticTrace.cs
- Interlocked.cs
- TransformCollection.cs
- WaitHandleCannotBeOpenedException.cs
- DataTableCollection.cs
- InternalCache.cs
- DateTimeAutomationPeer.cs
- ByteStack.cs
- Operator.cs
- XmlSchemaSequence.cs
- OdbcPermission.cs
- TransformerTypeCollection.cs
- CoTaskMemUnicodeSafeHandle.cs
- TableRowGroup.cs
- ToolStripOverflow.cs
- BaseTemplateParser.cs
- ComponentEvent.cs
- PixelShader.cs
- URLBuilder.cs
- _SecureChannel.cs
- DataGridViewRowEventArgs.cs