Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / System / Windows / Threading / DispatcherObject.cs / 1 / 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.
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
- DataGridViewLayoutData.cs
- FixedSOMTableCell.cs
- ChineseLunisolarCalendar.cs
- NativeMethods.cs
- SrgsOneOf.cs
- IndentedWriter.cs
- PrintPreviewGraphics.cs
- OleDbException.cs
- FixedSchema.cs
- KeyConverter.cs
- SafeNativeMethods.cs
- XmlSchemaExternal.cs
- ExtendedPropertyCollection.cs
- SQLInt16Storage.cs
- BaseComponentEditor.cs
- BuildProvidersCompiler.cs
- WorkItem.cs
- _ConnectOverlappedAsyncResult.cs
- Panel.cs
- TableRow.cs
- StringSorter.cs
- ProviderConnectionPointCollection.cs
- sqlinternaltransaction.cs
- TextChange.cs
- CheckedPointers.cs
- NodeInfo.cs
- IDQuery.cs
- StringUtil.cs
- CompModHelpers.cs
- XmlSchemaValidator.cs
- CheckBoxRenderer.cs
- CollectionEditVerbManager.cs
- PackageDigitalSignatureManager.cs
- DateTimeOffsetAdapter.cs
- DetailsViewInsertedEventArgs.cs
- ModifierKeysConverter.cs
- AjaxFrameworkAssemblyAttribute.cs
- TextComposition.cs
- StaticSiteMapProvider.cs
- TextWriterEngine.cs
- FormClosingEvent.cs
- ExpressionContext.cs
- Exceptions.cs
- DirtyTextRange.cs
- WorkflowItemPresenter.cs
- XPathSelfQuery.cs
- LicenseProviderAttribute.cs
- ObjectDataSourceDisposingEventArgs.cs
- RouteUrlExpressionBuilder.cs
- PrimaryKeyTypeConverter.cs
- rsa.cs
- RuleEngine.cs
- ReadOnlyPermissionSet.cs
- PermissionAttributes.cs
- ListViewPagedDataSource.cs
- CryptoConfig.cs
- ContourSegment.cs
- Object.cs
- DataMisalignedException.cs
- SoapProtocolReflector.cs
- Manipulation.cs
- BooleanFunctions.cs
- PropertyContainer.cs
- AssociatedControlConverter.cs
- DecoderFallbackWithFailureFlag.cs
- FormClosingEvent.cs
- Int32Rect.cs
- SessionParameter.cs
- BeginStoryboard.cs
- LateBoundBitmapDecoder.cs
- BaseInfoTable.cs
- CategoryGridEntry.cs
- Visual3D.cs
- TriggerAction.cs
- DataGridHeaderBorder.cs
- _HelperAsyncResults.cs
- SHA512.cs
- LogConverter.cs
- BitVec.cs
- SimpleApplicationHost.cs
- XmlSchemaComplexContentRestriction.cs
- VirtualDirectoryMapping.cs
- ProtectedUri.cs
- SchemaMerger.cs
- _SSPIWrapper.cs
- NativeMethods.cs
- FeatureSupport.cs
- RootDesignerSerializerAttribute.cs
- HtmlSelect.cs
- DataGridViewLayoutData.cs
- PersonalizableTypeEntry.cs
- DiagnosticsConfiguration.cs
- DataGridColumn.cs
- RequestQueue.cs
- AutomationAttributeInfo.cs
- OdbcEnvironmentHandle.cs
- DependencyPropertyConverter.cs
- GB18030Encoding.cs
- XmlElement.cs
- HebrewCalendar.cs