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
- SchemaReference.cs
- SmiEventStream.cs
- compensatingcollection.cs
- XmlUtil.cs
- UserPreferenceChangedEventArgs.cs
- CachedFontFace.cs
- ConsumerConnectionPointCollection.cs
- CommandExpr.cs
- SettingsPropertyCollection.cs
- NavigationHelper.cs
- HtmlInputControl.cs
- DecimalAnimationUsingKeyFrames.cs
- PermissionSet.cs
- TypeUnloadedException.cs
- CaseInsensitiveHashCodeProvider.cs
- InfiniteTimeSpanConverter.cs
- XmlStreamedByteStreamReader.cs
- Rfc2898DeriveBytes.cs
- CodeSnippetTypeMember.cs
- CompiledQueryCacheEntry.cs
- XmlAttribute.cs
- SignatureResourcePool.cs
- DataGridViewCheckBoxCell.cs
- IdnElement.cs
- UIElementAutomationPeer.cs
- UserControlCodeDomTreeGenerator.cs
- ImageSourceConverter.cs
- FrameworkTemplate.cs
- CompilerGlobalScopeAttribute.cs
- RelationshipNavigation.cs
- MeshGeometry3D.cs
- LabelDesigner.cs
- FunctionMappingTranslator.cs
- DispatcherHookEventArgs.cs
- TemplateDefinition.cs
- PointKeyFrameCollection.cs
- AsyncWaitHandle.cs
- WebPartEditorApplyVerb.cs
- SortQuery.cs
- RectangleGeometry.cs
- nulltextcontainer.cs
- QuadTree.cs
- ContextActivityUtils.cs
- MenuItemStyle.cs
- ImageList.cs
- QuaternionRotation3D.cs
- ErrorProvider.cs
- BrowserCapabilitiesCompiler.cs
- ApplicationSettingsBase.cs
- ExtendedPropertyCollection.cs
- CodeEntryPointMethod.cs
- PngBitmapDecoder.cs
- ContextMenu.cs
- RadioButton.cs
- unsafenativemethodstextservices.cs
- ServiceNameElementCollection.cs
- Matrix.cs
- FileSecurity.cs
- WindowsComboBox.cs
- XmlUtil.cs
- DesignerForm.cs
- ConfigurationSectionGroupCollection.cs
- TimeBoundedCache.cs
- DesignerExtenders.cs
- BamlLocalizationDictionary.cs
- RemoteWebConfigurationHostStream.cs
- RegionIterator.cs
- UnsupportedPolicyOptionsException.cs
- RawStylusSystemGestureInputReport.cs
- DesignerSerializationOptionsAttribute.cs
- SelectorAutomationPeer.cs
- Queue.cs
- OracleConnectionFactory.cs
- ConnectionManagementElement.cs
- LambdaCompiler.Generated.cs
- InstanceHandleReference.cs
- AsyncOperationManager.cs
- EventListenerClientSide.cs
- Brushes.cs
- AmbientLight.cs
- WebPartManager.cs
- GridView.cs
- EncryptedData.cs
- DesignerVerb.cs
- SystemUnicastIPAddressInformation.cs
- ExtendedTransformFactory.cs
- ListParaClient.cs
- ObjectQueryProvider.cs
- TextTrailingCharacterEllipsis.cs
- SoapFaultCodes.cs
- Command.cs
- GridViewColumn.cs
- XPathNavigator.cs
- DashStyle.cs
- AddInContractAttribute.cs
- NotFiniteNumberException.cs
- ScrollEventArgs.cs
- RuleSettingsCollection.cs
- WpfKnownTypeInvoker.cs
- Freezable.cs