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
- DataGridViewTopLeftHeaderCell.cs
- FileRecordSequenceCompletedAsyncResult.cs
- SiteIdentityPermission.cs
- ClientScriptManager.cs
- future.cs
- ExecutionEngineException.cs
- WebServiceReceive.cs
- TraceLog.cs
- LayoutTable.cs
- Relationship.cs
- SiteMapSection.cs
- ServiceAuthorizationElement.cs
- XmlQuerySequence.cs
- ColorTransformHelper.cs
- SoapAttributeOverrides.cs
- ApplicationBuildProvider.cs
- XmlILCommand.cs
- ResourceIDHelper.cs
- DependencyPropertyHelper.cs
- DefaultValueTypeConverter.cs
- BindingCollectionElement.cs
- ContextMenu.cs
- EUCJPEncoding.cs
- PingOptions.cs
- DbExpressionBuilder.cs
- DataSourceCache.cs
- InfoCardTraceRecord.cs
- ToolStripAdornerWindowService.cs
- DataGridViewColumnTypeEditor.cs
- XmlSchema.cs
- documentsequencetextcontainer.cs
- Expr.cs
- Rotation3DAnimationUsingKeyFrames.cs
- SubqueryRules.cs
- XmlCodeExporter.cs
- ZoneMembershipCondition.cs
- RootAction.cs
- DataTablePropertyDescriptor.cs
- DecoderExceptionFallback.cs
- XmlElementList.cs
- WebPartEditorOkVerb.cs
- NetDataContractSerializer.cs
- Math.cs
- TextDecorations.cs
- Encoding.cs
- WebResponse.cs
- PropertyOrder.cs
- CompositionCommandSet.cs
- ActiveDesignSurfaceEvent.cs
- WorkflowMessageEventHandler.cs
- CollectionConverter.cs
- CommandValueSerializer.cs
- UnsafeNativeMethods.cs
- DateTimeParse.cs
- StringExpressionSet.cs
- Activity.cs
- HMAC.cs
- ProvidePropertyAttribute.cs
- InvalidOperationException.cs
- ExpressionDumper.cs
- MsmqInputMessagePool.cs
- AudioStateChangedEventArgs.cs
- CodeTypeDelegate.cs
- _FtpControlStream.cs
- HelpProvider.cs
- log.cs
- Columns.cs
- StorageMappingItemCollection.cs
- OptimizedTemplateContentHelper.cs
- DNS.cs
- UserPersonalizationStateInfo.cs
- Scheduler.cs
- RoleManagerSection.cs
- HttpWebRequest.cs
- MulticastIPAddressInformationCollection.cs
- SslStream.cs
- DoubleCollectionConverter.cs
- EncoderBestFitFallback.cs
- RuleAttributes.cs
- XmlAttributeProperties.cs
- DataTableClearEvent.cs
- ToolStripRenderEventArgs.cs
- DataMember.cs
- ViewBox.cs
- SecurityTokenParameters.cs
- WebPartCollection.cs
- StateDesigner.LayoutSelectionGlyph.cs
- DataGridViewCell.cs
- TypeKeyValue.cs
- DbParameterCollection.cs
- BasicExpressionVisitor.cs
- CustomDictionarySources.cs
- ModifierKeysConverter.cs
- CodeExporter.cs
- SystemTcpConnection.cs
- TimelineCollection.cs
- MetadataAssemblyHelper.cs
- Keywords.cs
- IdnMapping.cs
- FormsAuthenticationConfiguration.cs