Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Base / System / Windows / Threading / DispatcherObject.cs / 1 / DispatcherObject.cs
using System; using System.Windows; using System.Threading; using MS.Internal.WindowsBase; // FriendAccessAllowed namespace System.Windows.Threading { ////// A DispatcherObject is an object associated with a /// ///. A DispatcherObject instance should /// only be access by the dispatcher's thread. /// /// Subclasses of public abstract class DispatcherObject { ///should enforce thread /// safety by calling on all their public /// methods to ensure the calling thread is the appropriate thread. /// /// DispatcherObject cannot be independently instantiated; that is, /// all constructors are protected. /// /// Returns the [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)] public Dispatcher Dispatcher { get { // This property is free-threaded. return _dispatcher; } } // This method allows certain derived classes to break the dispatcher affinity // of our objects. [FriendAccessAllowed] // Built into Base, also used by Framework. internal void DetachFromDispatcher() { _dispatcher = null; } ///that this /// is associated with. /// /// Checks that the calling thread has access to this object. /// ////// Only the dispatcher thread may access DispatcherObjects. /// /// This method is public so that any thread can probe to /// see if it has access to the DispatcherObject. /// ////// True if the calling thread has access to this object. /// [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public bool CheckAccess() { // This method is free-threaded. bool accessAllowed = true; Dispatcher dispatcher = _dispatcher; // Note: a DispatcherObject that is not associated with a // dispatcher is considered to be free-threaded. if(dispatcher != null) { accessAllowed = dispatcher.CheckAccess(); } return accessAllowed; } ////// Verifies that the calling thread has access to this object. /// ////// Only the dispatcher thread may access DispatcherObjects. /// /// This method is public so that derived classes can probe to /// see if the calling thread has access to itself. /// [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public void VerifyAccess() { // This method is free-threaded. Dispatcher dispatcher = _dispatcher; // Note: a DispatcherObject that is not associated with a // dispatcher is considered to be free-threaded. if(dispatcher != null) { dispatcher.VerifyAccess(); } } ////// Instantiate this object associated with the current Dispatcher. /// protected DispatcherObject() { _dispatcher = Dispatcher.CurrentDispatcher; } private Dispatcher _dispatcher; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Windows; using System.Threading; using MS.Internal.WindowsBase; // FriendAccessAllowed namespace System.Windows.Threading { ////// A DispatcherObject is an object associated with a /// ///. A DispatcherObject instance should /// only be access by the dispatcher's thread. /// /// Subclasses of public abstract class DispatcherObject { ///should enforce thread /// safety by calling on all their public /// methods to ensure the calling thread is the appropriate thread. /// /// DispatcherObject cannot be independently instantiated; that is, /// all constructors are protected. /// /// Returns the [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)] public Dispatcher Dispatcher { get { // This property is free-threaded. return _dispatcher; } } // This method allows certain derived classes to break the dispatcher affinity // of our objects. [FriendAccessAllowed] // Built into Base, also used by Framework. internal void DetachFromDispatcher() { _dispatcher = null; } ///that this /// is associated with. /// /// Checks that the calling thread has access to this object. /// ////// Only the dispatcher thread may access DispatcherObjects. /// /// This method is public so that any thread can probe to /// see if it has access to the DispatcherObject. /// ////// True if the calling thread has access to this object. /// [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public bool CheckAccess() { // This method is free-threaded. bool accessAllowed = true; Dispatcher dispatcher = _dispatcher; // Note: a DispatcherObject that is not associated with a // dispatcher is considered to be free-threaded. if(dispatcher != null) { accessAllowed = dispatcher.CheckAccess(); } return accessAllowed; } ////// Verifies that the calling thread has access to this object. /// ////// Only the dispatcher thread may access DispatcherObjects. /// /// This method is public so that derived classes can probe to /// see if the calling thread has access to itself. /// [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public void VerifyAccess() { // This method is free-threaded. Dispatcher dispatcher = _dispatcher; // Note: a DispatcherObject that is not associated with a // dispatcher is considered to be free-threaded. if(dispatcher != null) { dispatcher.VerifyAccess(); } } ////// Instantiate this object associated with the current Dispatcher. /// protected DispatcherObject() { _dispatcher = Dispatcher.CurrentDispatcher; } private Dispatcher _dispatcher; } } // 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
- GrammarBuilderRuleRef.cs
- Point3DValueSerializer.cs
- CompilationSection.cs
- TcpChannelFactory.cs
- ThousandthOfEmRealDoubles.cs
- KeyedHashAlgorithm.cs
- SmtpNegotiateAuthenticationModule.cs
- MethodBuilder.cs
- ReturnEventArgs.cs
- FixedSOMGroup.cs
- PinnedBufferMemoryStream.cs
- EntityKey.cs
- XpsS0ValidatingLoader.cs
- ServiceBehaviorElement.cs
- WeakReference.cs
- CrossAppDomainChannel.cs
- LinkLabel.cs
- SyntaxCheck.cs
- StringAnimationBase.cs
- TransactionTable.cs
- CompositionAdorner.cs
- UndoManager.cs
- ValueSerializerAttribute.cs
- GcSettings.cs
- CodeArrayIndexerExpression.cs
- BinaryMethodMessage.cs
- PropertyFilterAttribute.cs
- ScrollEvent.cs
- SimpleMailWebEventProvider.cs
- MD5HashHelper.cs
- WebBrowserDocumentCompletedEventHandler.cs
- SchemaImporter.cs
- TableRow.cs
- DesignerDataView.cs
- EastAsianLunisolarCalendar.cs
- ContainerCodeDomSerializer.cs
- MatrixAnimationBase.cs
- DebugController.cs
- InstanceLockException.cs
- Matrix3D.cs
- MetadataSerializer.cs
- XmlSerializationWriter.cs
- LocalizableResourceBuilder.cs
- ConvertersCollection.cs
- HasCopySemanticsAttribute.cs
- XsltContext.cs
- RemoteArgument.cs
- PreloadedPackages.cs
- UIElementHelper.cs
- MailAddress.cs
- NavigationService.cs
- infer.cs
- IndependentlyAnimatedPropertyMetadata.cs
- DataGridItem.cs
- altserialization.cs
- PipeSecurity.cs
- ReliableReplySessionChannel.cs
- DbBuffer.cs
- Variable.cs
- InvariantComparer.cs
- SafeMarshalContext.cs
- ReflectionUtil.cs
- ServiceModelConfigurationSectionCollection.cs
- DocumentPropertiesDialog.cs
- Viewport3DAutomationPeer.cs
- RecognitionResult.cs
- FacetDescription.cs
- TracedNativeMethods.cs
- SessionStateItemCollection.cs
- DisableDpiAwarenessAttribute.cs
- ActivityInterfaces.cs
- RepeatButton.cs
- ObjectDataSourceView.cs
- PropertyMapper.cs
- MessageVersionConverter.cs
- SolidColorBrush.cs
- LinqMaximalSubtreeNominator.cs
- IdentityValidationException.cs
- SerializationObjectManager.cs
- ConfigurationCollectionAttribute.cs
- TemplatedWizardStep.cs
- LOSFormatter.cs
- OleDbErrorCollection.cs
- GcHandle.cs
- UserControl.cs
- baseshape.cs
- RegularExpressionValidator.cs
- ColorConvertedBitmap.cs
- BlurEffect.cs
- RegexGroupCollection.cs
- ISO2022Encoding.cs
- HttpModuleActionCollection.cs
- Zone.cs
- ApplicationFileParser.cs
- followingsibling.cs
- MenuItem.cs
- ResourceDescriptionAttribute.cs
- XslCompiledTransform.cs
- SqlFunctions.cs
- CommentEmitter.cs