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
- HtmlInputRadioButton.cs
- Content.cs
- ImageButton.cs
- BreakRecordTable.cs
- ReservationNotFoundException.cs
- ChannelManager.cs
- PagedDataSource.cs
- Speller.cs
- ScriptingSectionGroup.cs
- FixedTextContainer.cs
- ProxyAttribute.cs
- DispatcherFrame.cs
- SplitContainer.cs
- PageThemeBuildProvider.cs
- DesignerHelpers.cs
- TextParagraphView.cs
- XPathDocument.cs
- HashHelper.cs
- AnchoredBlock.cs
- TargetPerspective.cs
- SerialErrors.cs
- OleDbMetaDataFactory.cs
- NamespaceCollection.cs
- RevocationPoint.cs
- ExcCanonicalXml.cs
- TextBoxDesigner.cs
- WebPartTransformerAttribute.cs
- PolyBezierSegmentFigureLogic.cs
- Mapping.cs
- DataContractSerializer.cs
- SqlConnection.cs
- FillErrorEventArgs.cs
- ResourceDisplayNameAttribute.cs
- ModelTreeEnumerator.cs
- CapiNative.cs
- QuaternionKeyFrameCollection.cs
- ReliableInputConnection.cs
- AdapterUtil.cs
- DocumentsTrace.cs
- AuthenticationException.cs
- MappingModelBuildProvider.cs
- ClientFormsIdentity.cs
- RuntimeArgumentHandle.cs
- CapabilitiesSection.cs
- ProviderCollection.cs
- BlurEffect.cs
- WindowsStartMenu.cs
- ObjectDataSourceMethodEventArgs.cs
- GeometryConverter.cs
- ByeOperation11AsyncResult.cs
- SingleQueryOperator.cs
- XamlTemplateSerializer.cs
- TableCellCollection.cs
- ScrollData.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ListViewItemSelectionChangedEvent.cs
- SafeTokenHandle.cs
- TextEditorThreadLocalStore.cs
- BinHexDecoder.cs
- typedescriptorpermissionattribute.cs
- IFlowDocumentViewer.cs
- DetailsViewCommandEventArgs.cs
- CheckBoxBaseAdapter.cs
- GeometryDrawing.cs
- XPathNavigator.cs
- StreamGeometryContext.cs
- ListDictionary.cs
- AdornerPresentationContext.cs
- PartialCachingControl.cs
- CodeCatchClauseCollection.cs
- GestureRecognizer.cs
- CultureInfoConverter.cs
- PriorityBindingExpression.cs
- NGCSerializationManager.cs
- DataSourceDesigner.cs
- DocumentViewerAutomationPeer.cs
- MsmqIntegrationInputChannel.cs
- CommandTreeTypeHelper.cs
- DelegateSerializationHolder.cs
- SqlDependencyListener.cs
- NumericUpDownAcceleration.cs
- CqlBlock.cs
- ScaleTransform.cs
- Vector3D.cs
- ContainerCodeDomSerializer.cs
- EntityCommand.cs
- ObjectTag.cs
- XmlEntity.cs
- SqlRemoveConstantOrderBy.cs
- xmlfixedPageInfo.cs
- QueryAccessibilityHelpEvent.cs
- BinarySerializer.cs
- TabRenderer.cs
- AdjustableArrowCap.cs
- DynamicPropertyHolder.cs
- RSACryptoServiceProvider.cs
- XmlToDatasetMap.cs
- PageSettings.cs
- XmlReaderSettings.cs
- Events.cs