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
- VolatileEnlistmentState.cs
- Pkcs7Recipient.cs
- TokenBasedSet.cs
- DataIdProcessor.cs
- ConfigXmlCDataSection.cs
- GAC.cs
- TextSearch.cs
- GlobalItem.cs
- XamlReaderHelper.cs
- StackSpiller.Generated.cs
- XamlInt32CollectionSerializer.cs
- ConfigXmlSignificantWhitespace.cs
- ChtmlImageAdapter.cs
- InfoCardTraceRecord.cs
- AspCompat.cs
- CachingHintValidation.cs
- Matrix3DConverter.cs
- GetCryptoTransformRequest.cs
- SvcMapFile.cs
- basecomparevalidator.cs
- TracingConnection.cs
- contentDescriptor.cs
- BufferAllocator.cs
- AsynchronousChannel.cs
- CompoundFileStorageReference.cs
- StringPropertyBuilder.cs
- SetterBaseCollection.cs
- InputLanguageSource.cs
- WebHeaderCollection.cs
- DelimitedListTraceListener.cs
- InstanceDataCollection.cs
- InkCollectionBehavior.cs
- HtmlObjectListAdapter.cs
- InternalMappingException.cs
- NullRuntimeConfig.cs
- AlternationConverter.cs
- KeyToListMap.cs
- TextEditorContextMenu.cs
- MimeBasePart.cs
- ImplicitInputBrush.cs
- Regex.cs
- EventBindingService.cs
- FocusWithinProperty.cs
- UnsafeNativeMethodsPenimc.cs
- FixedElement.cs
- EndpointAddressAugust2004.cs
- BrowserCapabilitiesCompiler.cs
- CodeNamespaceCollection.cs
- PixelFormatConverter.cs
- QueryExecutionOption.cs
- ToolStripItemClickedEventArgs.cs
- FamilyMapCollection.cs
- TextTreeObjectNode.cs
- DataGridViewCellParsingEventArgs.cs
- XmlAnyAttributeAttribute.cs
- OrderedEnumerableRowCollection.cs
- SchemaImporterExtensionElement.cs
- exports.cs
- RawUIStateInputReport.cs
- SQLGuid.cs
- Stroke.cs
- EntityParameter.cs
- ContentTextAutomationPeer.cs
- DataGridViewTopRowAccessibleObject.cs
- SevenBitStream.cs
- Polyline.cs
- safelink.cs
- TableMethodGenerator.cs
- Quaternion.cs
- EntityCommandExecutionException.cs
- QueueSurrogate.cs
- Matrix3DValueSerializer.cs
- ByeMessage11.cs
- PanelDesigner.cs
- WriteableBitmap.cs
- SchemaCollectionPreprocessor.cs
- SimpleWorkerRequest.cs
- ClientSession.cs
- PreviewPrintController.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ServicePointManager.cs
- TextAdaptor.cs
- HtmlControl.cs
- ReflectionUtil.cs
- WrappedIUnknown.cs
- ArgumentValueSerializer.cs
- MethodCallExpression.cs
- WhitespaceRule.cs
- ServiceProviders.cs
- BitFlagsGenerator.cs
- IDictionary.cs
- CheckoutException.cs
- DispatcherExceptionEventArgs.cs
- EventProperty.cs
- EditorPart.cs
- DataChangedEventManager.cs
- ThicknessAnimationUsingKeyFrames.cs
- TextEncodedRawTextWriter.cs
- LinqDataSourceEditData.cs
- _LocalDataStore.cs