Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SimplePropertyEntry.cs
- PropertyGroupDescription.cs
- InternalsVisibleToAttribute.cs
- ServiceEndpointElement.cs
- MetadataHelper.cs
- StatusBar.cs
- EventLogQuery.cs
- XLinq.cs
- CodeGenHelper.cs
- RowToFieldTransformer.cs
- WindowsStartMenu.cs
- DataSourceHelper.cs
- BaseParaClient.cs
- ConnectionManagementElement.cs
- ListComponentEditorPage.cs
- CommonObjectSecurity.cs
- SymbolEqualComparer.cs
- SaveFileDialog.cs
- HttpHandlerAction.cs
- URLString.cs
- SizeKeyFrameCollection.cs
- NamespaceCollection.cs
- DataGridViewLayoutData.cs
- MouseActionConverter.cs
- CultureData.cs
- Bold.cs
- SequentialUshortCollection.cs
- RepeaterCommandEventArgs.cs
- DispatcherOperation.cs
- DesignerTextWriter.cs
- ObjectSecurity.cs
- ArrayConverter.cs
- BinaryWriter.cs
- MobileResource.cs
- SmtpReplyReader.cs
- FormViewCommandEventArgs.cs
- Attributes.cs
- ResolveMatchesMessageCD1.cs
- _ScatterGatherBuffers.cs
- ForeignKeyConstraint.cs
- SingleResultAttribute.cs
- ReferenceConverter.cs
- BindableAttribute.cs
- DBConcurrencyException.cs
- DataControlPagerLinkButton.cs
- BooleanAnimationUsingKeyFrames.cs
- DocumentXPathNavigator.cs
- JavaScriptString.cs
- ChangeBlockUndoRecord.cs
- _NestedMultipleAsyncResult.cs
- Label.cs
- InheritedPropertyChangedEventArgs.cs
- DataServiceHostFactory.cs
- GridViewRowPresenterBase.cs
- MachineKeyConverter.cs
- CellPartitioner.cs
- CacheDependency.cs
- TextDecoration.cs
- ReadWriteControlDesigner.cs
- DataSetSchema.cs
- ServiceDescriptionReflector.cs
- SecUtil.cs
- FormViewModeEventArgs.cs
- TextSelection.cs
- MSAANativeProvider.cs
- GenerateHelper.cs
- EntityDataSourceDesigner.cs
- FrameworkElement.cs
- ToolStripTextBox.cs
- GridViewColumn.cs
- XsltConvert.cs
- GeneralTransformCollection.cs
- _NestedSingleAsyncResult.cs
- StateManagedCollection.cs
- GenericUriParser.cs
- LightweightCodeGenerator.cs
- ValueQuery.cs
- EntityDataSourceDataSelection.cs
- XmlLangPropertyAttribute.cs
- Thread.cs
- Span.cs
- LocatorManager.cs
- NullableIntSumAggregationOperator.cs
- WindowsFormsLinkLabel.cs
- ContentControl.cs
- TargetPerspective.cs
- PeerInvitationResponse.cs
- ClientRoleProvider.cs
- ResXResourceSet.cs
- JpegBitmapDecoder.cs
- UriExt.cs
- MaskedTextProvider.cs
- DrawListViewColumnHeaderEventArgs.cs
- DriveNotFoundException.cs
- RegexBoyerMoore.cs
- PolyLineSegment.cs
- EntityCollection.cs
- BinaryObjectInfo.cs
- KeyedByTypeCollection.cs
- TemplateField.cs