Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / System / Windows / Threading / DispatcherObject.cs / 1 / 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
- DesignTimeParseData.cs
- GetTokenRequest.cs
- Point3D.cs
- WebPartConnectionsCloseVerb.cs
- LineUtil.cs
- NetStream.cs
- EntityDataSourceState.cs
- EventNotify.cs
- TimeoutValidationAttribute.cs
- PageCatalogPart.cs
- DataGridViewCellStyle.cs
- TreeIterators.cs
- ActivityWithResultWrapper.cs
- CommonDialog.cs
- DesignerToolboxInfo.cs
- CLSCompliantAttribute.cs
- AuthenticateEventArgs.cs
- CertificateManager.cs
- SystemWebExtensionsSectionGroup.cs
- ElementNotEnabledException.cs
- QueueProcessor.cs
- ArgumentsParser.cs
- DbConnectionPoolGroup.cs
- sqlcontext.cs
- HGlobalSafeHandle.cs
- ColorConverter.cs
- XmlDownloadManager.cs
- SqlFlattener.cs
- BezierSegment.cs
- DataGridViewLayoutData.cs
- ResourceLoader.cs
- SortDescription.cs
- CuspData.cs
- DocumentPageView.cs
- SchemaCollectionPreprocessor.cs
- InputScopeConverter.cs
- DescriptionAttribute.cs
- WindowsAuthenticationEventArgs.cs
- TemplateParser.cs
- versioninfo.cs
- TerminateSequenceResponse.cs
- MediaSystem.cs
- WebPartsSection.cs
- SslStream.cs
- Native.cs
- PeerContact.cs
- EncodingTable.cs
- RelationshipFixer.cs
- UnhandledExceptionEventArgs.cs
- WebPartConnectionsEventArgs.cs
- CachedCompositeFamily.cs
- XmlIgnoreAttribute.cs
- TextAutomationPeer.cs
- SqlDataSourceEnumerator.cs
- WebAdminConfigurationHelper.cs
- CardSpaceException.cs
- _ServiceNameStore.cs
- LinqToSqlWrapper.cs
- AppearanceEditorPart.cs
- MetadataPropertyAttribute.cs
- CustomError.cs
- WebPartVerb.cs
- EnvelopedSignatureTransform.cs
- FormViewCommandEventArgs.cs
- LocalFileSettingsProvider.cs
- DbConnectionPoolGroup.cs
- Win32.cs
- ValidatorCollection.cs
- HtmlTableRow.cs
- BasicCellRelation.cs
- EpmSourcePathSegment.cs
- InstalledVoice.cs
- CategoryValueConverter.cs
- JavaScriptSerializer.cs
- UndoManager.cs
- DrawingContextWalker.cs
- DocumentGridPage.cs
- ObjectDataSourceDesigner.cs
- SerTrace.cs
- MemberMaps.cs
- DateBoldEvent.cs
- ListViewInsertionMark.cs
- ColumnTypeConverter.cs
- FamilyTypeface.cs
- DesignerOptionService.cs
- DataContractSerializerMessageContractImporter.cs
- Paragraph.cs
- RegistrationContext.cs
- SimpleType.cs
- Validator.cs
- XmlConvert.cs
- Mapping.cs
- ValidatorCollection.cs
- NetSectionGroup.cs
- MsmqReceiveHelper.cs
- MessageUtil.cs
- MemoryStream.cs
- SqlRowUpdatingEvent.cs
- FontFamily.cs
- ping.cs