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
- PermissionSetEnumerator.cs
- DrawingCollection.cs
- Dictionary.cs
- OledbConnectionStringbuilder.cs
- ContentPresenter.cs
- DBCommandBuilder.cs
- EntityDataSourceSelectedEventArgs.cs
- TextServicesDisplayAttribute.cs
- newinstructionaction.cs
- DocumentPageViewAutomationPeer.cs
- RsaSecurityToken.cs
- XmlNamespaceManager.cs
- Floater.cs
- QueueAccessMode.cs
- NavigationWindow.cs
- odbcmetadatacolumnnames.cs
- RowToFieldTransformer.cs
- Page.cs
- EditorZoneBase.cs
- ConfigurationSettings.cs
- PropagatorResult.cs
- FramingEncoders.cs
- WebPartDescription.cs
- Container.cs
- ValidationEventArgs.cs
- QuotedPrintableStream.cs
- cookie.cs
- ContractSearchPattern.cs
- ProfileInfo.cs
- configsystem.cs
- ResourceSet.cs
- ApplicationServiceManager.cs
- InternalBase.cs
- HyperLinkColumn.cs
- DoubleIndependentAnimationStorage.cs
- InvalidOperationException.cs
- OrderedDictionaryStateHelper.cs
- HtmlInputControl.cs
- SchemaSetCompiler.cs
- RepeatButton.cs
- UserCancellationException.cs
- MulticastOption.cs
- Clock.cs
- EventSinkActivity.cs
- HtmlInputText.cs
- HwndSubclass.cs
- SystemMulticastIPAddressInformation.cs
- Assign.cs
- RoleManagerModule.cs
- SharedDp.cs
- XXXInfos.cs
- TcpClientCredentialType.cs
- AssemblySettingAttributes.cs
- Rect.cs
- NonParentingControl.cs
- WindowsEditBoxRange.cs
- TypedTableGenerator.cs
- GridItemPattern.cs
- ObjectListComponentEditor.cs
- Freezable.cs
- DataGrid.cs
- BrowserDefinition.cs
- QueryContinueDragEvent.cs
- ListenerConfig.cs
- TextTreeUndoUnit.cs
- TextEmbeddedObject.cs
- SessionPageStatePersister.cs
- InternalPolicyElement.cs
- ScriptControlDescriptor.cs
- HttpResponseInternalWrapper.cs
- _ProxyRegBlob.cs
- GroupItem.cs
- UserNameServiceElement.cs
- DataSourceViewSchemaConverter.cs
- ItemsPanelTemplate.cs
- DockPattern.cs
- PointCollectionConverter.cs
- KeyValueSerializer.cs
- DisplayNameAttribute.cs
- AssemblyLoader.cs
- DetailsViewModeEventArgs.cs
- HwndMouseInputProvider.cs
- PromptEventArgs.cs
- EndOfStreamException.cs
- DaylightTime.cs
- QuadraticBezierSegment.cs
- ReflectPropertyDescriptor.cs
- Unit.cs
- EditorPartChrome.cs
- BidOverLoads.cs
- PersonalizationProviderHelper.cs
- ScrollProperties.cs
- XmlObjectSerializer.cs
- InvalidCastException.cs
- UpdatePanelTriggerCollection.cs
- IndexOutOfRangeException.cs
- MemberAssignmentAnalysis.cs
- SelectingProviderEventArgs.cs
- TextContainer.cs
- QueueProcessor.cs