Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- Buffer.cs
- MapPathBasedVirtualPathProvider.cs
- ColorConvertedBitmapExtension.cs
- DataBoundControlParameterTarget.cs
- NullToBooleanConverter.cs
- MetabaseSettingsIis7.cs
- Transform3D.cs
- ExpandSegmentCollection.cs
- SetUserPreferenceRequest.cs
- SqlTrackingWorkflowInstance.cs
- ProxyWebPartConnectionCollection.cs
- IdentifierCollection.cs
- FixedPosition.cs
- TextRangeEditTables.cs
- FigureParagraph.cs
- HtmlLink.cs
- WorkflowDispatchContext.cs
- IdentitySection.cs
- Int64AnimationBase.cs
- DataControlFieldHeaderCell.cs
- JournalNavigationScope.cs
- OneOfConst.cs
- PtsCache.cs
- Paragraph.cs
- QuaternionIndependentAnimationStorage.cs
- Panel.cs
- MissingFieldException.cs
- DiscoveryClientBindingElement.cs
- WebPartZoneBaseDesigner.cs
- CatalogPartChrome.cs
- ControlCachePolicy.cs
- GroupStyle.cs
- XmlCharType.cs
- RbTree.cs
- DeflateInput.cs
- DbConnectionPoolIdentity.cs
- XmlTextReader.cs
- InputElement.cs
- InputProcessorProfiles.cs
- ContextBase.cs
- DropShadowBitmapEffect.cs
- SqlCachedBuffer.cs
- WebPartUtil.cs
- Int32KeyFrameCollection.cs
- LinkedResource.cs
- ViewSimplifier.cs
- DataGridViewCheckBoxCell.cs
- LateBoundBitmapDecoder.cs
- ContentElement.cs
- XPathArrayIterator.cs
- TextParaClient.cs
- ContainerVisual.cs
- DirtyTextRange.cs
- GridViewCommandEventArgs.cs
- DataViewListener.cs
- StructuralComparisons.cs
- StringDictionaryWithComparer.cs
- MethodRental.cs
- ConfigXmlCDataSection.cs
- KerberosReceiverSecurityToken.cs
- BuildProviderUtils.cs
- CustomValidator.cs
- DataBoundLiteralControl.cs
- localization.cs
- InstanceStoreQueryResult.cs
- IndexedSelectQueryOperator.cs
- BinHexEncoder.cs
- MouseGestureValueSerializer.cs
- TrackBarRenderer.cs
- AttributeQuery.cs
- DataGridTextBoxColumn.cs
- FixedSOMGroup.cs
- TextParagraphCache.cs
- MulticastOption.cs
- BookmarkResumptionRecord.cs
- LinqDataSourceContextData.cs
- ObjectCache.cs
- ParsedAttributeCollection.cs
- ConstructorBuilder.cs
- ListParagraph.cs
- SafeLocalMemHandle.cs
- ElementNotEnabledException.cs
- WebEventCodes.cs
- CommentEmitter.cs
- DataGridViewRowsRemovedEventArgs.cs
- BitmapEffectGeneralTransform.cs
- SamlAdvice.cs
- MessageBox.cs
- XmlReader.cs
- ThreadPoolTaskScheduler.cs
- Image.cs
- LocatorBase.cs
- Int32.cs
- ToolStripStatusLabel.cs
- SystemGatewayIPAddressInformation.cs
- LocationFactory.cs
- ExtenderProvidedPropertyAttribute.cs
- DesignerLinkAdapter.cs
- ConfigurationProperty.cs
- InputReport.cs