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
- GridToolTip.cs
- GenerateTemporaryTargetAssembly.cs
- EntryIndex.cs
- SqlDataSourceSummaryPanel.cs
- DataControlField.cs
- DbProviderFactories.cs
- FillRuleValidation.cs
- Button.cs
- GridEntry.cs
- ScriptRef.cs
- PackagingUtilities.cs
- AsymmetricCryptoHandle.cs
- WebPartZone.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- XmlHierarchicalDataSourceView.cs
- SQLInt32.cs
- RTTrackingProfile.cs
- BridgeDataReader.cs
- UnmanagedBitmapWrapper.cs
- GridViewRowCollection.cs
- Int32CAMarshaler.cs
- PropertyPathConverter.cs
- StatusCommandUI.cs
- TextPointer.cs
- RemotingException.cs
- VirtualPath.cs
- DataGridViewCellParsingEventArgs.cs
- SubstitutionResponseElement.cs
- XamlSerializer.cs
- JsonXmlDataContract.cs
- MessageSmuggler.cs
- StateDesigner.cs
- LifetimeServices.cs
- NotFiniteNumberException.cs
- Operator.cs
- UidManager.cs
- JulianCalendar.cs
- ObjectQueryProvider.cs
- CursorConverter.cs
- PathData.cs
- BaseParaClient.cs
- Utils.cs
- BitmapImage.cs
- RowParagraph.cs
- Site.cs
- PathFigure.cs
- XmlSecureResolver.cs
- CodeDirectiveCollection.cs
- FlowLayoutSettings.cs
- _NetRes.cs
- SafeNativeMemoryHandle.cs
- ADMembershipUser.cs
- ButtonBaseDesigner.cs
- ErrorStyle.cs
- CorrelationResolver.cs
- GroupStyle.cs
- HtmlContainerControl.cs
- PopOutPanel.cs
- NativeWindow.cs
- DataGridPageChangedEventArgs.cs
- CustomWebEventKey.cs
- RuntimeComponentFilter.cs
- HostSecurityManager.cs
- DbProviderFactories.cs
- ProcessModelSection.cs
- EdmComplexTypeAttribute.cs
- ThreadStaticAttribute.cs
- CapabilitiesAssignment.cs
- DesignerView.xaml.cs
- ToolStrip.cs
- PreloadedPackages.cs
- SQlBooleanStorage.cs
- FileLogRecordStream.cs
- WebPartCancelEventArgs.cs
- DrawToolTipEventArgs.cs
- IntegerFacetDescriptionElement.cs
- WebScriptServiceHost.cs
- ReadOnlyCollectionBase.cs
- RelationshipManager.cs
- GenerateTemporaryTargetAssembly.cs
- DependencyPropertyKind.cs
- SQLDecimal.cs
- SQLGuid.cs
- TabControl.cs
- XmlDataSource.cs
- CreateParams.cs
- SrgsRuleRef.cs
- EncryptedXml.cs
- DataGridState.cs
- ObjRef.cs
- ParsedAttributeCollection.cs
- SQLChars.cs
- BamlLocalizer.cs
- PointCollectionConverter.cs
- WebPartHelpVerb.cs
- TraceSwitch.cs
- AssociationType.cs
- QueryCorrelationInitializer.cs
- UrlMappingsSection.cs
- OrderByBuilder.cs