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
- SharedDp.cs
- Monitor.cs
- CodeDirectiveCollection.cs
- TextEditorSelection.cs
- FullTextState.cs
- TypePropertyEditor.cs
- CriticalHandle.cs
- DataServiceHost.cs
- SqlDataSourceFilteringEventArgs.cs
- SynchronizationLockException.cs
- safemediahandle.cs
- MemberPath.cs
- isolationinterop.cs
- TreeNodeEventArgs.cs
- DataRelation.cs
- CommandBindingCollection.cs
- XmlSchemaInfo.cs
- ToolStripGrip.cs
- ScriptRegistrationManager.cs
- BindStream.cs
- BaseResourcesBuildProvider.cs
- DeclaredTypeElement.cs
- ProjectionPruner.cs
- RequestCachePolicy.cs
- TextStore.cs
- DataGridViewSelectedRowCollection.cs
- InheritanceAttribute.cs
- EventBuilder.cs
- Line.cs
- HandlerFactoryWrapper.cs
- ValueQuery.cs
- DataServiceResponse.cs
- GetLedgerRequest.cs
- MultiPropertyDescriptorGridEntry.cs
- Group.cs
- CommandEventArgs.cs
- CodeDirectionExpression.cs
- XmlAttributes.cs
- MaxSessionCountExceededException.cs
- ConstraintCollection.cs
- TransformValueSerializer.cs
- ReflectionPermission.cs
- QilSortKey.cs
- ReceiveParametersContent.cs
- BinaryFormatter.cs
- KeyedHashAlgorithm.cs
- BuildProvider.cs
- CodeTypeDelegate.cs
- SamlAction.cs
- KoreanCalendar.cs
- NetworkInformationException.cs
- QuaternionAnimation.cs
- ParseHttpDate.cs
- PackageDigitalSignature.cs
- TempEnvironment.cs
- TreeViewAutomationPeer.cs
- DoubleConverter.cs
- XmlSchemaNotation.cs
- PeerPresenceInfo.cs
- ContractCodeDomInfo.cs
- UnsafeNativeMethods.cs
- PreservationFileWriter.cs
- IssuedSecurityTokenParameters.cs
- HostedTcpTransportManager.cs
- ContentDisposition.cs
- MessageParameterAttribute.cs
- SqlDelegatedTransaction.cs
- SqlTriggerAttribute.cs
- XmlNamespaceDeclarationsAttribute.cs
- FixedSOMContainer.cs
- OdbcCommandBuilder.cs
- HtmlInputFile.cs
- ComboBoxRenderer.cs
- PropertyValueChangedEvent.cs
- ProfileModule.cs
- AlignmentXValidation.cs
- LeafCellTreeNode.cs
- AnyReturnReader.cs
- ModelUIElement3D.cs
- MultiPropertyDescriptorGridEntry.cs
- COM2ColorConverter.cs
- PropertyExpression.cs
- KernelTypeValidation.cs
- SqlNode.cs
- CfgRule.cs
- CodeExporter.cs
- JsonUriDataContract.cs
- unsafeIndexingFilterStream.cs
- Drawing.cs
- InvalidCastException.cs
- HashRepartitionStream.cs
- FunctionMappingTranslator.cs
- DataGridViewCellStateChangedEventArgs.cs
- DesignTimeDataBinding.cs
- WebPartAddingEventArgs.cs
- AsyncResult.cs
- TryCatchDesigner.xaml.cs
- MetadataCollection.cs
- ContractHandle.cs
- CollectionChange.cs