Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PolicyStatement.cs
- TouchesOverProperty.cs
- MediaContextNotificationWindow.cs
- ClientSponsor.cs
- Mouse.cs
- PrimitiveType.cs
- MSAAWinEventWrap.cs
- ClientEventManager.cs
- Encoder.cs
- CharStorage.cs
- odbcmetadatacollectionnames.cs
- ShapingEngine.cs
- RenderData.cs
- PersonalizableAttribute.cs
- StringUtil.cs
- CodeAttachEventStatement.cs
- XmlNodeChangedEventArgs.cs
- MatrixAnimationBase.cs
- ConnectionsZone.cs
- ValidationRule.cs
- PrintDialog.cs
- XmlSchemaCompilationSettings.cs
- COM2PropertyDescriptor.cs
- ADMembershipUser.cs
- BooleanExpr.cs
- ImmComposition.cs
- QueryContinueDragEvent.cs
- AutomationProperty.cs
- StylusEventArgs.cs
- Emitter.cs
- ListView.cs
- CreateUserWizardStep.cs
- MetadataExchangeClient.cs
- FontStretches.cs
- TrackingAnnotationCollection.cs
- TableChangeProcessor.cs
- Model3DGroup.cs
- KeyValueConfigurationElement.cs
- Automation.cs
- TextInfo.cs
- BooleanAnimationBase.cs
- FontFamily.cs
- ServiceOperationUIEditor.cs
- Trigger.cs
- TranslateTransform3D.cs
- CodeMemberField.cs
- EnumBuilder.cs
- StateWorkerRequest.cs
- TypeLibConverter.cs
- PopOutPanel.cs
- FileLevelControlBuilderAttribute.cs
- HttpListenerRequestUriBuilder.cs
- TableRowCollection.cs
- WebPartAuthorizationEventArgs.cs
- ToolStripArrowRenderEventArgs.cs
- ToolboxItemFilterAttribute.cs
- SR.cs
- HttpProfileBase.cs
- OracleParameterBinding.cs
- CookieParameter.cs
- EtwTrace.cs
- Keyboard.cs
- SerializationInfoEnumerator.cs
- SystemIPGlobalStatistics.cs
- ConfigurationFileMap.cs
- DateTimePicker.cs
- CrossSiteScriptingValidation.cs
- BuildResult.cs
- RectangleF.cs
- Identity.cs
- PropertyValue.cs
- DuplicateWaitObjectException.cs
- SpecialFolderEnumConverter.cs
- GridViewSortEventArgs.cs
- FieldToken.cs
- CodeGenerator.cs
- WorkflowStateRollbackService.cs
- SortQuery.cs
- CommandHelpers.cs
- List.cs
- FileDetails.cs
- Compiler.cs
- StylusPlugInCollection.cs
- LostFocusEventManager.cs
- RequestCachePolicy.cs
- NewArrayExpression.cs
- DiscoveryClientBindingElement.cs
- TextOptions.cs
- SessionParameter.cs
- ResXResourceWriter.cs
- Freezable.cs
- CompensableActivity.cs
- Application.cs
- MethodImplAttribute.cs
- InstalledFontCollection.cs
- SyndicationItem.cs
- DataGridViewSortCompareEventArgs.cs
- ProxyAttribute.cs
- XmlArrayItemAttribute.cs
- WorkflowDebuggerSteppingAttribute.cs