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 public abstract class DispatcherObject { ///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. /// /// Returns the [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; } ///that this /// is associated with. /// /// 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
- XmlArrayItemAttributes.cs
- TdsParserStaticMethods.cs
- DocumentSchemaValidator.cs
- DbgCompiler.cs
- SelectionPatternIdentifiers.cs
- ZipFileInfo.cs
- InvokePatternIdentifiers.cs
- XmlSerializerAssemblyAttribute.cs
- MasterPageCodeDomTreeGenerator.cs
- Oci.cs
- CrossContextChannel.cs
- CreateParams.cs
- SQLStringStorage.cs
- TraceSwitch.cs
- ChannelBase.cs
- FaultConverter.cs
- Marshal.cs
- cache.cs
- DES.cs
- ServiceObjectContainer.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- Transform.cs
- ServiceNameElementCollection.cs
- SRDisplayNameAttribute.cs
- SQLMembershipProvider.cs
- BuildProvider.cs
- DbConnectionStringBuilder.cs
- DeviceContext.cs
- OrthographicCamera.cs
- EntityUtil.cs
- DataSourceControl.cs
- BoundsDrawingContextWalker.cs
- XmlTextWriter.cs
- TracingConnection.cs
- wgx_render.cs
- Variant.cs
- ExpandedWrapper.cs
- MouseGestureConverter.cs
- LazyTextWriterCreator.cs
- XmlArrayItemAttribute.cs
- LinqDataSourceContextData.cs
- TypedDataSourceCodeGenerator.cs
- ToolZone.cs
- TextCompositionManager.cs
- EncoderParameter.cs
- SimpleHandlerFactory.cs
- EventEntry.cs
- EntityContainer.cs
- CodeDomComponentSerializationService.cs
- WebPartConnectionsConfigureVerb.cs
- MessageContractAttribute.cs
- WindowsEditBox.cs
- StdValidatorsAndConverters.cs
- TextTreeRootTextBlock.cs
- EmissiveMaterial.cs
- DatePickerTextBox.cs
- PropertyDescriptorGridEntry.cs
- TransactionProxy.cs
- Propagator.ExtentPlaceholderCreator.cs
- ConfigXmlAttribute.cs
- SetStoryboardSpeedRatio.cs
- IntPtr.cs
- Odbc32.cs
- SessionPageStateSection.cs
- CodeGeneratorOptions.cs
- SafeProcessHandle.cs
- WebReferencesBuildProvider.cs
- PropertyItem.cs
- WebEventCodes.cs
- WebPartConnection.cs
- FixedFindEngine.cs
- AmbientValueAttribute.cs
- MediaEntryAttribute.cs
- TemplateGroupCollection.cs
- PresentationAppDomainManager.cs
- JobDuplex.cs
- XmlSchemaType.cs
- KeyPressEvent.cs
- SpecularMaterial.cs
- TypedAsyncResult.cs
- FileUpload.cs
- ConfigDefinitionUpdates.cs
- HandleCollector.cs
- HttpResponseBase.cs
- XmlSchemaRedefine.cs
- XmlUtil.cs
- SourceFileBuildProvider.cs
- ModifyActivitiesPropertyDescriptor.cs
- TouchesOverProperty.cs
- KnownBoxes.cs
- ComplexType.cs
- SiteMapNodeItemEventArgs.cs
- KeyInterop.cs
- String.cs
- TreeView.cs
- CorrelationResolver.cs
- InfocardClientCredentials.cs
- GlyphInfoList.cs
- CodeRemoveEventStatement.cs
- ApplicationProxyInternal.cs