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 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.
///
public abstract class DispatcherObject
{
///
/// Returns the that this
/// is associated with.
///
[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;
}
///
/// 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
- HMACMD5.cs
- ImageKeyConverter.cs
- GeneralTransform.cs
- DataSourceCache.cs
- CallbackException.cs
- DataGridViewCellValidatingEventArgs.cs
- UnsafeNativeMethods.cs
- WebPartMenu.cs
- BinaryExpressionHelper.cs
- GeneratedCodeAttribute.cs
- PointKeyFrameCollection.cs
- MarshalDirectiveException.cs
- EventSinkHelperWriter.cs
- DefaultPropertyAttribute.cs
- StickyNoteHelper.cs
- HierarchicalDataTemplate.cs
- RightsManagementProvider.cs
- FileDialog_Vista_Interop.cs
- WindowsTokenRoleProvider.cs
- CodeSubDirectory.cs
- AuthStoreRoleProvider.cs
- CopyOnWriteList.cs
- SchemaComplexType.cs
- WriteableOnDemandStream.cs
- TextDecorationCollectionConverter.cs
- ItemsPanelTemplate.cs
- Constants.cs
- HtmlInputControl.cs
- SHA512.cs
- ScriptModule.cs
- MLangCodePageEncoding.cs
- CreateParams.cs
- streamingZipPartStream.cs
- DesignOnlyAttribute.cs
- DesignerTransactionCloseEvent.cs
- WebPartTransformerCollection.cs
- CollectionContainer.cs
- WindowVisualStateTracker.cs
- elementinformation.cs
- PropertySourceInfo.cs
- ProfileSettingsCollection.cs
- LineUtil.cs
- DbMetaDataCollectionNames.cs
- ImmComposition.cs
- CancellableEnumerable.cs
- PolyBezierSegmentFigureLogic.cs
- _TransmitFileOverlappedAsyncResult.cs
- SubMenuStyle.cs
- COAUTHIDENTITY.cs
- IDispatchConstantAttribute.cs
- ToolStripStatusLabel.cs
- BufferModeSettings.cs
- HelpKeywordAttribute.cs
- AsyncPostBackTrigger.cs
- RoutedUICommand.cs
- ReflectionTypeLoadException.cs
- MemberDomainMap.cs
- ListItemConverter.cs
- File.cs
- InkCanvas.cs
- ResourceReferenceExpression.cs
- SafeNativeMethodsOther.cs
- Win32Interop.cs
- ReadOnlyDataSourceView.cs
- ToolStripOverflow.cs
- DataControlFieldCell.cs
- HwndSubclass.cs
- ProcessHostFactoryHelper.cs
- UIPropertyMetadata.cs
- PolicyUnit.cs
- RecordConverter.cs
- HandleTable.cs
- MemberCollection.cs
- XmlDocumentSerializer.cs
- TemplateDefinition.cs
- MarkupProperty.cs
- TableItemPattern.cs
- BaseProcessor.cs
- ScrollableControlDesigner.cs
- ZipIOLocalFileBlock.cs
- AssemblyResourceLoader.cs
- HttpWebResponse.cs
- DatatypeImplementation.cs
- EncryptedKeyIdentifierClause.cs
- NullableConverter.cs
- SizeConverter.cs
- ArcSegment.cs
- MiniCustomAttributeInfo.cs
- ParameterInfo.cs
- MetadataArtifactLoader.cs
- StringAnimationBase.cs
- DateTimeConverter.cs
- BulletedListEventArgs.cs
- StateMachineHistory.cs
- MappingMetadataHelper.cs
- Function.cs
- MaskedTextBox.cs
- WebConfigurationManager.cs
- Predicate.cs
- ResolveResponse.cs