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
- TraceListener.cs
- AmbientLight.cs
- XmlSiteMapProvider.cs
- ToolTipService.cs
- ExtendLockCommand.cs
- SqlCharStream.cs
- BooleanFacetDescriptionElement.cs
- XPathAncestorIterator.cs
- ACE.cs
- _CookieModule.cs
- DataGridColumn.cs
- TcpTransportBindingElement.cs
- DataRowCollection.cs
- InternalRelationshipCollection.cs
- ExecutionContext.cs
- ComponentChangingEvent.cs
- ObjectStateFormatter.cs
- StringValueConverter.cs
- HostedElements.cs
- IMembershipProvider.cs
- FocusChangedEventArgs.cs
- IOException.cs
- _SingleItemRequestCache.cs
- WeakHashtable.cs
- FigureHelper.cs
- CompressedStack.cs
- SoapCodeExporter.cs
- HandleDictionary.cs
- OpCodes.cs
- XmlILIndex.cs
- DataGridViewCellParsingEventArgs.cs
- ErrorStyle.cs
- SystemIcmpV4Statistics.cs
- BuildResultCache.cs
- DataQuery.cs
- UrlPath.cs
- FunctionOverloadResolver.cs
- HttpDigestClientCredential.cs
- WCFModelStrings.Designer.cs
- OlePropertyStructs.cs
- DocumentXPathNavigator.cs
- OrderingInfo.cs
- UpdateManifestForBrowserApplication.cs
- ListViewTableRow.cs
- ShortcutKeysEditor.cs
- LabelLiteral.cs
- MimeFormatter.cs
- DetailsViewAutoFormat.cs
- RadioButtonPopupAdapter.cs
- DocumentViewerHelper.cs
- PlatformNotSupportedException.cs
- TemplateControl.cs
- ButtonChrome.cs
- CodeThrowExceptionStatement.cs
- DrawingImage.cs
- SqlCommandAsyncResult.cs
- EncoderReplacementFallback.cs
- PageOutputQuality.cs
- EmptyEnumerable.cs
- ProfilePropertySettingsCollection.cs
- DataGridViewRowEventArgs.cs
- SiteMapDataSource.cs
- AdornerLayer.cs
- MembershipValidatePasswordEventArgs.cs
- DummyDataSource.cs
- NativeMethods.cs
- DataGridViewBand.cs
- LZCodec.cs
- AssemblyName.cs
- UpdatePanelTriggerCollection.cs
- MDIWindowDialog.cs
- KeyEvent.cs
- SafeReversePInvokeHandle.cs
- SmtpException.cs
- fixedPageContentExtractor.cs
- SudsWriter.cs
- ColumnMapTranslator.cs
- HuffModule.cs
- PointAnimation.cs
- SoapCodeExporter.cs
- OpCopier.cs
- LostFocusEventManager.cs
- DesignerActionList.cs
- EngineSiteSapi.cs
- EntryIndex.cs
- TokenBasedSet.cs
- DataTableMappingCollection.cs
- RightsManagementEncryptionTransform.cs
- FormParameter.cs
- DefaultTraceListener.cs
- DataGridViewAutoSizeModeEventArgs.cs
- NameValuePermission.cs
- TextTabProperties.cs
- ProtectedConfigurationProviderCollection.cs
- ButtonStandardAdapter.cs
- InvalidProgramException.cs
- Transform3DGroup.cs
- basemetadatamappingvisitor.cs
- NonParentingControl.cs
- ResourceType.cs