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
- ColumnHeaderConverter.cs
- Encoder.cs
- PackageDigitalSignature.cs
- securitycriticaldataformultiplegetandset.cs
- DoubleConverter.cs
- ReliableChannelBinder.cs
- RoutedEventHandlerInfo.cs
- xmlformatgeneratorstatics.cs
- UrlAuthorizationModule.cs
- MenuItemStyle.cs
- ResourceWriter.cs
- XmlKeywords.cs
- ReturnEventArgs.cs
- _FixedSizeReader.cs
- ZipIOCentralDirectoryBlock.cs
- CommandField.cs
- MbpInfo.cs
- FileDetails.cs
- UIPermission.cs
- NoneExcludedImageIndexConverter.cs
- AttributeData.cs
- Translator.cs
- CharacterMetricsDictionary.cs
- UnionCodeGroup.cs
- CornerRadiusConverter.cs
- SoapBinding.cs
- TagMapCollection.cs
- Bits.cs
- WindowsNonControl.cs
- ContextMenu.cs
- XsltOutput.cs
- FixedSOMTextRun.cs
- ItemPager.cs
- DLinqColumnProvider.cs
- Schedule.cs
- WebPartChrome.cs
- GenericEnumConverter.cs
- BinaryNode.cs
- SkewTransform.cs
- SimpleType.cs
- SqlPersonalizationProvider.cs
- EdmTypeAttribute.cs
- EventRouteFactory.cs
- DaylightTime.cs
- LockCookie.cs
- SynchronizedKeyedCollection.cs
- smtpconnection.cs
- XsltSettings.cs
- TabControlCancelEvent.cs
- ActiveXSite.cs
- CommandField.cs
- WebPartCatalogCloseVerb.cs
- ConnectionPoint.cs
- Int16Converter.cs
- KeyConstraint.cs
- DataControlFieldHeaderCell.cs
- Light.cs
- SecurityUniqueId.cs
- XsdDuration.cs
- UnsafeNativeMethods.cs
- ItemContainerPattern.cs
- SourceFileBuildProvider.cs
- XmlSiteMapProvider.cs
- RequestQueue.cs
- TcpProcessProtocolHandler.cs
- WorkflowApplicationEventArgs.cs
- URLIdentityPermission.cs
- TypeFieldSchema.cs
- PostBackOptions.cs
- MenuItemBinding.cs
- AppSettingsExpressionBuilder.cs
- ToolboxItemAttribute.cs
- XsltContext.cs
- CredentialCache.cs
- TransactionInformation.cs
- TypeForwardedToAttribute.cs
- HeaderUtility.cs
- WebControlsSection.cs
- StoreContentChangedEventArgs.cs
- WindowPatternIdentifiers.cs
- ComponentResourceKeyConverter.cs
- PipeStream.cs
- DataGridViewColumnTypeEditor.cs
- ServiceTimeoutsElement.cs
- Control.cs
- ResourcesBuildProvider.cs
- AutoGeneratedField.cs
- EditorOptionAttribute.cs
- JoinTreeNode.cs
- XmlByteStreamWriter.cs
- DataIdProcessor.cs
- FilterableData.cs
- NonBatchDirectoryCompiler.cs
- TypedAsyncResult.cs
- InstanceDescriptor.cs
- HttpTransportManager.cs
- ToolStripItemTextRenderEventArgs.cs
- EditorZoneBase.cs
- ControlCachePolicy.cs
- TreeViewAutomationPeer.cs