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
- KeyMatchBuilder.cs
- FileRecordSequence.cs
- DetailsViewUpdateEventArgs.cs
- EventPropertyMap.cs
- LockCookie.cs
- MetadataPropertyAttribute.cs
- Rules.cs
- SoapAttributeOverrides.cs
- WebPartConnectionsCloseVerb.cs
- Cloud.cs
- TextElementEditingBehaviorAttribute.cs
- Composition.cs
- XmlDocumentFragment.cs
- Monitor.cs
- oledbmetadatacolumnnames.cs
- TextSchema.cs
- CornerRadiusConverter.cs
- EntityViewContainer.cs
- SapiRecoInterop.cs
- LoginViewDesigner.cs
- ToolStripDropDownMenu.cs
- XamlDebuggerXmlReader.cs
- counter.cs
- DelimitedListTraceListener.cs
- externdll.cs
- EventDriven.cs
- WindowsTokenRoleProvider.cs
- FtpCachePolicyElement.cs
- AffineTransform3D.cs
- SecurityPolicyVersion.cs
- PerformanceCountersElement.cs
- TagMapInfo.cs
- DrawingContextDrawingContextWalker.cs
- DoubleLinkList.cs
- FileSystemWatcher.cs
- NavigatorInput.cs
- XappLauncher.cs
- XmlDocument.cs
- ItemType.cs
- UserControl.cs
- CodeTypeParameter.cs
- ItemAutomationPeer.cs
- VirtualizedContainerService.cs
- ClientProxyGenerator.cs
- FixedSOMTextRun.cs
- ToolStripContentPanelRenderEventArgs.cs
- DebuggerAttributes.cs
- AuthenticodeSignatureInformation.cs
- PropertyNames.cs
- WebPartCatalogAddVerb.cs
- MethodAccessException.cs
- ConfigXmlSignificantWhitespace.cs
- RSAPKCS1KeyExchangeFormatter.cs
- PeerHelpers.cs
- SqlTrackingQuery.cs
- ResolveNameEventArgs.cs
- TextMetrics.cs
- MemoryMappedViewStream.cs
- _IPv4Address.cs
- InputProcessorProfiles.cs
- CustomBindingCollectionElement.cs
- XmlCustomFormatter.cs
- RedistVersionInfo.cs
- XmlWriterSettings.cs
- CompositeCollection.cs
- PasswordRecovery.cs
- ExpressionBindingCollection.cs
- FilteredAttributeCollection.cs
- BaseCollection.cs
- StrokeNodeOperations2.cs
- ConversionValidationRule.cs
- HyperLink.cs
- Claim.cs
- MessageHeaderT.cs
- StringUtil.cs
- Trace.cs
- InputMethodStateChangeEventArgs.cs
- AssertSection.cs
- LiteralControl.cs
- SubMenuStyleCollection.cs
- LOSFormatter.cs
- OuterGlowBitmapEffect.cs
- OutputCacheModule.cs
- XmlLinkedNode.cs
- ParameterReplacerVisitor.cs
- Point3DKeyFrameCollection.cs
- SecUtil.cs
- InheritanceContextHelper.cs
- UriParserTemplates.cs
- StateChangeEvent.cs
- CompilationLock.cs
- tooltip.cs
- QilStrConcat.cs
- ProgressiveCrcCalculatingStream.cs
- OleDbSchemaGuid.cs
- DataGridViewButtonColumn.cs
- x509store.cs
- BitmapEffect.cs
- PrintingPermissionAttribute.cs
- Effect.cs