Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / Threading / DispatcherObject.cs / 1305600 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbConnectionHelper.cs
- SchemaNamespaceManager.cs
- EmbeddedObject.cs
- SerialStream.cs
- AttachedAnnotationChangedEventArgs.cs
- DataRelationPropertyDescriptor.cs
- XmlWriterSettings.cs
- PublishLicense.cs
- TemplateKeyConverter.cs
- SymmetricAlgorithm.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- ProviderSettingsCollection.cs
- ProxyHelper.cs
- StylusCaptureWithinProperty.cs
- AttributeCollection.cs
- ConstraintCollection.cs
- IisTraceListener.cs
- CommonProperties.cs
- DataObjectPastingEventArgs.cs
- WebPartZoneCollection.cs
- RtfToken.cs
- EnumDataContract.cs
- PointAnimation.cs
- VectorConverter.cs
- BamlStream.cs
- WasAdminWrapper.cs
- SymmetricAlgorithm.cs
- CharacterShapingProperties.cs
- SelectionItemProviderWrapper.cs
- HttpCacheVaryByContentEncodings.cs
- System.Data_BID.cs
- ListMarkerLine.cs
- BinarySecretKeyIdentifierClause.cs
- AsmxEndpointPickerExtension.cs
- SecondaryIndex.cs
- DetailsViewUpdatedEventArgs.cs
- DecimalKeyFrameCollection.cs
- RemoteWebConfigurationHost.cs
- ExtensionQuery.cs
- MarginsConverter.cs
- XslTransform.cs
- ServiceModelDictionary.cs
- IndependentAnimationStorage.cs
- GCHandleCookieTable.cs
- PrintController.cs
- TableItemPattern.cs
- CustomAssemblyResolver.cs
- InvokeProviderWrapper.cs
- ForeignConstraint.cs
- HtmlToClrEventProxy.cs
- Expressions.cs
- WebPartZoneBase.cs
- Html32TextWriter.cs
- AQNBuilder.cs
- _HeaderInfoTable.cs
- NameValueCollection.cs
- CookielessHelper.cs
- ColumnProvider.cs
- entityreference_tresulttype.cs
- XmlAtomicValue.cs
- SqlCacheDependency.cs
- WebBodyFormatMessageProperty.cs
- DataGridViewCellPaintingEventArgs.cs
- XAMLParseException.cs
- XhtmlBasicTextBoxAdapter.cs
- Update.cs
- ThicknessAnimation.cs
- SHA1CryptoServiceProvider.cs
- TransformValueSerializer.cs
- TdsEnums.cs
- DocumentSchemaValidator.cs
- ChannelEndpointElementCollection.cs
- ControlPropertyNameConverter.cs
- CodeAttributeArgumentCollection.cs
- ContractMapping.cs
- XmlStringTable.cs
- SqlLiftIndependentRowExpressions.cs
- SchemaType.cs
- UndoEngine.cs
- Event.cs
- ConfigXmlAttribute.cs
- XmlConverter.cs
- WindowPatternIdentifiers.cs
- DataGridHelper.cs
- DrawingGroupDrawingContext.cs
- OdbcConnectionHandle.cs
- XmlnsCache.cs
- DataSourceProvider.cs
- TransformConverter.cs
- DrawListViewItemEventArgs.cs
- StylusDevice.cs
- NativeConfigurationLoader.cs
- TextRunCache.cs
- HotSpot.cs
- MaskedTextProvider.cs
- DecimalAnimation.cs
- GeneralTransformGroup.cs
- UniqueID.cs
- InvokeHandlers.cs
- xmlglyphRunInfo.cs