Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ValueProviderWrapper.cs
- WindowsIPAddress.cs
- ModelItemCollection.cs
- RequestQueue.cs
- Button.cs
- UIPermission.cs
- ObjectDataSourceStatusEventArgs.cs
- TemplatedWizardStep.cs
- EventMappingSettings.cs
- Number.cs
- DictionaryManager.cs
- GridViewCancelEditEventArgs.cs
- Shape.cs
- ExceptionUtil.cs
- NoResizeSelectionBorderGlyph.cs
- XmlReflectionImporter.cs
- MtomMessageEncodingBindingElement.cs
- TraceXPathNavigator.cs
- ScriptRef.cs
- WebConfigurationManager.cs
- DateTimeFormat.cs
- XmlSchemaSimpleContentRestriction.cs
- ColumnResizeUndoUnit.cs
- WebPartEditVerb.cs
- ConfigXmlWhitespace.cs
- TextServicesCompartment.cs
- ArrayWithOffset.cs
- ClientOperation.cs
- StringUtil.cs
- BamlTreeMap.cs
- StylusSystemGestureEventArgs.cs
- StateInitializationDesigner.cs
- ConstraintConverter.cs
- CustomExpression.cs
- QueryOptionExpression.cs
- ButtonBase.cs
- ResourceProperty.cs
- TraceSection.cs
- XmlNullResolver.cs
- QilReplaceVisitor.cs
- CodeDefaultValueExpression.cs
- XmlUTF8TextReader.cs
- DataServiceProcessingPipelineEventArgs.cs
- TreeNodeEventArgs.cs
- DiagnosticStrings.cs
- ItemsPanelTemplate.cs
- RegexCaptureCollection.cs
- ProcessThread.cs
- COM2PropertyDescriptor.cs
- InternalBase.cs
- login.cs
- AspCompat.cs
- XmlEntity.cs
- ComboBox.cs
- CodeSubDirectory.cs
- CopyAttributesAction.cs
- RC2.cs
- UIElementPropertyUndoUnit.cs
- ContentPresenter.cs
- ALinqExpressionVisitor.cs
- SamlAudienceRestrictionCondition.cs
- DataGridViewRowEventArgs.cs
- HandlerMappingMemo.cs
- ToolStripScrollButton.cs
- InstanceOwnerException.cs
- ResourceExpressionBuilder.cs
- CompatibleIComparer.cs
- FastPropertyAccessor.cs
- MatrixTransform3D.cs
- ListControlDesigner.cs
- ContextMenu.cs
- ToolStrip.cs
- PasswordRecoveryDesigner.cs
- DoubleConverter.cs
- BaseValidator.cs
- ComplusTypeValidator.cs
- RecognitionResult.cs
- DynamicDiscoSearcher.cs
- HttpResponseHeader.cs
- EdmComplexTypeAttribute.cs
- FixedBufferAttribute.cs
- DataGridViewComboBoxColumn.cs
- EventLogPermission.cs
- URIFormatException.cs
- QilStrConcatenator.cs
- ListBoxItemWrapperAutomationPeer.cs
- PrintPreviewGraphics.cs
- XmlDataLoader.cs
- RepeaterCommandEventArgs.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- QilXmlWriter.cs
- CrossContextChannel.cs
- PeerNearMe.cs
- SimpleBitVector32.cs
- XmlSchemaObjectTable.cs
- ListViewPagedDataSource.cs
- QuerySetOp.cs
- NativeMethods.cs
- EditorBrowsableAttribute.cs
- ExpressionEditorSheet.cs