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
- PagerSettings.cs
- XmlBoundElement.cs
- ReturnValue.cs
- XmlSerializerNamespaces.cs
- ResourceAssociationType.cs
- InstanceStore.cs
- QilInvokeLateBound.cs
- EditorBrowsableAttribute.cs
- JsonReader.cs
- ImageSource.cs
- DocumentApplicationJournalEntry.cs
- XmlSchemaSequence.cs
- WebPartConnectionsConnectVerb.cs
- SiteMapProvider.cs
- WebContext.cs
- CultureMapper.cs
- UnmanagedMarshal.cs
- MenuItem.cs
- PropertyValueUIItem.cs
- GridViewSortEventArgs.cs
- NonParentingControl.cs
- TargetException.cs
- EventWaitHandle.cs
- NullableLongMinMaxAggregationOperator.cs
- WeakHashtable.cs
- Debugger.cs
- DesignerActionPanel.cs
- TextDecoration.cs
- ImageList.cs
- TypeToStringValueConverter.cs
- VScrollProperties.cs
- Quad.cs
- WebPartConnectionsEventArgs.cs
- PointAnimationUsingKeyFrames.cs
- VoiceInfo.cs
- ExpressionBuilderContext.cs
- SwitchElementsCollection.cs
- GeometryGroup.cs
- SystemIcmpV4Statistics.cs
- RequestDescription.cs
- RequestCacheEntry.cs
- CodeDelegateCreateExpression.cs
- XmlMembersMapping.cs
- AbstractExpressions.cs
- DataServiceProcessingPipeline.cs
- BrowserDefinition.cs
- NextPreviousPagerField.cs
- DataViewSettingCollection.cs
- HtmlUtf8RawTextWriter.cs
- AssertSection.cs
- OperationCanceledException.cs
- QilBinary.cs
- HttpChannelHelper.cs
- DelimitedListTraceListener.cs
- TableLayoutRowStyleCollection.cs
- Matrix3DConverter.cs
- DataGridPagerStyle.cs
- HttpHostedTransportConfiguration.cs
- HeaderedContentControl.cs
- IndexedString.cs
- DictationGrammar.cs
- AssemblyCache.cs
- PiiTraceSource.cs
- RegexNode.cs
- FontStyle.cs
- Selection.cs
- CompositeControl.cs
- LogicalTreeHelper.cs
- CreateUserWizardStep.cs
- mediapermission.cs
- TTSVoice.cs
- DecimalAnimation.cs
- EventBuilder.cs
- DataGridViewCellCancelEventArgs.cs
- PKCS1MaskGenerationMethod.cs
- SqlConnectionString.cs
- ConfigurationValidatorBase.cs
- XmlCountingReader.cs
- CFStream.cs
- TreeViewEvent.cs
- Cell.cs
- AncillaryOps.cs
- MouseOverProperty.cs
- Duration.cs
- WindowsListViewItem.cs
- CheckBoxField.cs
- FormsIdentity.cs
- ManualWorkflowSchedulerService.cs
- WindowShowOrOpenTracker.cs
- IisTraceWebEventProvider.cs
- ImpersonationContext.cs
- base64Transforms.cs
- PointLightBase.cs
- CountdownEvent.cs
- Pen.cs
- WebFaultClientMessageInspector.cs
- IOException.cs
- SiteMapDataSourceView.cs
- ButtonField.cs
- KnownTypesProvider.cs