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
- TransactionFlowAttribute.cs
- ConstructorExpr.cs
- DynamicVirtualDiscoSearcher.cs
- basecomparevalidator.cs
- OrderedEnumerableRowCollection.cs
- SeverityFilter.cs
- TextTrailingWordEllipsis.cs
- TimeoutException.cs
- Boolean.cs
- FormsAuthenticationModule.cs
- XmlSchemaNotation.cs
- TableParagraph.cs
- SeparatorAutomationPeer.cs
- recordstatescratchpad.cs
- MetaModel.cs
- OneToOneMappingSerializer.cs
- PathParser.cs
- exports.cs
- NodeLabelEditEvent.cs
- Debugger.cs
- ChangeProcessor.cs
- WebPartCollection.cs
- RegexCompilationInfo.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- DataSetMappper.cs
- TableLayoutPanelCellPosition.cs
- basecomparevalidator.cs
- AnnotationComponentManager.cs
- FrameworkContentElementAutomationPeer.cs
- TextTreeTextNode.cs
- SqlStream.cs
- CreationContext.cs
- ProfileGroupSettings.cs
- VectorCollectionValueSerializer.cs
- CapabilitiesAssignment.cs
- DataPagerField.cs
- AppSettingsExpressionBuilder.cs
- Single.cs
- InternalBase.cs
- ShellProvider.cs
- CqlQuery.cs
- CacheMemory.cs
- odbcmetadatafactory.cs
- IndexingContentUnit.cs
- SqlBulkCopyColumnMappingCollection.cs
- TimeoutTimer.cs
- _FtpDataStream.cs
- FixedSOMImage.cs
- DataServiceOperationContext.cs
- smtpconnection.cs
- FlowDocumentScrollViewer.cs
- XmlAttributeAttribute.cs
- ControlLocalizer.cs
- sqlstateclientmanager.cs
- MonitoringDescriptionAttribute.cs
- Popup.cs
- DecimalSumAggregationOperator.cs
- MenuItemStyle.cs
- ExceptionValidationRule.cs
- MeshGeometry3D.cs
- XmlNotation.cs
- DataServiceKeyAttribute.cs
- PeerCustomResolverSettings.cs
- TreeViewImageIndexConverter.cs
- PriorityBinding.cs
- OptimizedTemplateContent.cs
- EventListener.cs
- oledbmetadatacolumnnames.cs
- ConfigurationHelpers.cs
- DataProtection.cs
- PtsContext.cs
- UrlEncodedParameterWriter.cs
- SystemUnicastIPAddressInformation.cs
- SchemaAttDef.cs
- ConstructorBuilder.cs
- Clock.cs
- Configuration.cs
- errorpatternmatcher.cs
- EqualityArray.cs
- BinaryUtilClasses.cs
- SerializationTrace.cs
- FontEmbeddingManager.cs
- WindowsToolbarItemAsMenuItem.cs
- FlowLayout.cs
- ThicknessKeyFrameCollection.cs
- AuthenticationService.cs
- SQLInt64.cs
- ErrorTableItemStyle.cs
- MapPathBasedVirtualPathProvider.cs
- WeakHashtable.cs
- CachedPathData.cs
- HttpResponse.cs
- Attributes.cs
- Point4D.cs
- FilteredXmlReader.cs
- DataSourceControl.cs
- SqlDependencyUtils.cs
- SiteMapPath.cs
- LayoutDump.cs
- RenderDataDrawingContext.cs