Code:
/ 4.0 / 4.0 / 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. 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
- CompareValidator.cs
- TypedTableBaseExtensions.cs
- InstanceKeyCompleteException.cs
- AuthenticatingEventArgs.cs
- SafeNativeMethodsOther.cs
- Cursors.cs
- WorkflowRequestContext.cs
- WindowsClaimSet.cs
- UpDownBase.cs
- OperationParameterInfo.cs
- UnmanagedBitmapWrapper.cs
- assemblycache.cs
- WinEventWrap.cs
- CodeActivityContext.cs
- ProxySimple.cs
- TextDocumentView.cs
- AtomPub10CategoriesDocumentFormatter.cs
- SafeArrayTypeMismatchException.cs
- PeerNameRecord.cs
- HiddenField.cs
- XmlSchemaSimpleTypeRestriction.cs
- RecognizerInfo.cs
- ActiveXHost.cs
- ScrollChrome.cs
- InputLanguageSource.cs
- TranslateTransform3D.cs
- CodeObjectCreateExpression.cs
- SecurityMessageProperty.cs
- Convert.cs
- DbXmlEnabledProviderManifest.cs
- CustomAttributeBuilder.cs
- TextAction.cs
- ClientCredentialsSecurityTokenManager.cs
- HashAlgorithm.cs
- DataGridViewColumnCollection.cs
- XmlDataSourceView.cs
- ReadOnlyDictionary.cs
- InternalSafeNativeMethods.cs
- XmlRootAttribute.cs
- PagerStyle.cs
- TablePattern.cs
- DataObjectAttribute.cs
- ParameterBuilder.cs
- GridViewPageEventArgs.cs
- TextParaLineResult.cs
- LinkButton.cs
- Assembly.cs
- GenericTypeParameterConverter.cs
- InputDevice.cs
- SimpleModelProvider.cs
- TailCallAnalyzer.cs
- QuerySubExprEliminator.cs
- DocumentViewerBase.cs
- DbInsertCommandTree.cs
- CollectionContainer.cs
- ColorMatrix.cs
- OdbcDataAdapter.cs
- RectKeyFrameCollection.cs
- _ListenerResponseStream.cs
- WeakHashtable.cs
- SelectionProviderWrapper.cs
- BitmapInitialize.cs
- Root.cs
- Rotation3DAnimation.cs
- SqlMethodCallConverter.cs
- XmlTextAttribute.cs
- SerializationBinder.cs
- EncoderNLS.cs
- newinstructionaction.cs
- ResourceDisplayNameAttribute.cs
- StyleSheetRefUrlEditor.cs
- OrthographicCamera.cs
- DataGridViewMethods.cs
- DrawingGroupDrawingContext.cs
- DataGridAutomationPeer.cs
- MappableObjectManager.cs
- Overlapped.cs
- ActivityXRefPropertyEditor.cs
- ReliableOutputConnection.cs
- DataTableNameHandler.cs
- CoreChannel.cs
- DocumentSchemaValidator.cs
- TextTreeTextElementNode.cs
- CompilationRelaxations.cs
- DataGridCellAutomationPeer.cs
- TranslateTransform3D.cs
- dataprotectionpermission.cs
- FontCollection.cs
- DynamicMethod.cs
- latinshape.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- CultureNotFoundException.cs
- TextRunCacheImp.cs
- Grid.cs
- SqlUserDefinedAggregateAttribute.cs
- OneOfConst.cs
- UrlAuthFailedErrorFormatter.cs
- sqlinternaltransaction.cs
- SecurityDocument.cs
- TemplateKeyConverter.cs