Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- RegistryKey.cs
- ContentOperations.cs
- TemplateBindingExtensionConverter.cs
- ContextDataSourceView.cs
- ToolStripSettings.cs
- WindowPatternIdentifiers.cs
- GeometryModel3D.cs
- ButtonPopupAdapter.cs
- NativeMethods.cs
- NativeMethods.cs
- GroupBox.cs
- ConfigurationValidatorAttribute.cs
- SerTrace.cs
- SystemThemeKey.cs
- LocalizabilityAttribute.cs
- ProtocolsInstallComponent.cs
- MarginsConverter.cs
- CacheDependency.cs
- User.cs
- DataGridColumnCollectionEditor.cs
- State.cs
- BaseParagraph.cs
- FirstMatchCodeGroup.cs
- Knowncolors.cs
- XmlSchemaInferenceException.cs
- ValueTypeIndexerReference.cs
- LayoutTableCell.cs
- FolderLevelBuildProvider.cs
- CollectionDataContract.cs
- SamlSecurityTokenAuthenticator.cs
- MaxValueConverter.cs
- RemotingConfiguration.cs
- manifestimages.cs
- SecurityContextSecurityTokenParameters.cs
- SrgsSubset.cs
- RedirectionProxy.cs
- ServerReliableChannelBinder.cs
- SqlCachedBuffer.cs
- ContractHandle.cs
- BamlReader.cs
- XmlHelper.cs
- SQLResource.cs
- VirtualDirectoryMapping.cs
- GPRECTF.cs
- DetectEofStream.cs
- CapabilitiesSection.cs
- ICspAsymmetricAlgorithm.cs
- MetadataCacheItem.cs
- IFormattable.cs
- LoadMessageLogger.cs
- InvalidDataException.cs
- TCPListener.cs
- DataServiceRequestException.cs
- CaretElement.cs
- WorkflowLayouts.cs
- ConfigurationLocationCollection.cs
- SqlMetaData.cs
- ListSourceHelper.cs
- AssertSection.cs
- SafeFileMapViewHandle.cs
- TemplateContainer.cs
- TransactionContext.cs
- TdsParserSafeHandles.cs
- OdbcConnectionString.cs
- SafeTimerHandle.cs
- ToolStripManager.cs
- CardSpaceShim.cs
- TextParagraphView.cs
- WebPartTransformerCollection.cs
- AsyncPostBackTrigger.cs
- BaseAddressElement.cs
- Expression.cs
- XPathParser.cs
- XslTransformFileEditor.cs
- PinnedBufferMemoryStream.cs
- SourceSwitch.cs
- FormViewUpdatedEventArgs.cs
- WebPartPersonalization.cs
- GenerateTemporaryTargetAssembly.cs
- SeekableReadStream.cs
- OdbcConnectionStringbuilder.cs
- CollectionViewGroupRoot.cs
- TiffBitmapEncoder.cs
- XmlChoiceIdentifierAttribute.cs
- FormsAuthenticationUserCollection.cs
- ProxyElement.cs
- SqlCharStream.cs
- WebBrowserEvent.cs
- AmbientProperties.cs
- BamlMapTable.cs
- StatusBar.cs
- LocatorManager.cs
- ApplicationServiceHelper.cs
- AnnotationResourceCollection.cs
- OleDbCommand.cs
- LinkButton.cs
- FixedSOMImage.cs
- ToolTipService.cs
- SelectionEditor.cs
- InstanceDescriptor.cs