Code:
/ 4.0 / 4.0 / 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. 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
- ItemCollection.cs
- SoapServerProtocol.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- DataBoundLiteralControl.cs
- RegisteredExpandoAttribute.cs
- GenericAuthenticationEventArgs.cs
- XamlTemplateSerializer.cs
- InputMethodStateChangeEventArgs.cs
- ApplicationTrust.cs
- Missing.cs
- VirtualPathProvider.cs
- SqlNodeAnnotations.cs
- HuffmanTree.cs
- HttpRawResponse.cs
- DbParameterCollectionHelper.cs
- Label.cs
- AnnotationHelper.cs
- ChangeBlockUndoRecord.cs
- OutputScope.cs
- SerializationStore.cs
- AngleUtil.cs
- UriScheme.cs
- MultiPropertyDescriptorGridEntry.cs
- PtsContext.cs
- WaitHandleCannotBeOpenedException.cs
- SafeProcessHandle.cs
- MonthCalendar.cs
- TabControlEvent.cs
- _IPv4Address.cs
- EncoderExceptionFallback.cs
- ApplicationFileCodeDomTreeGenerator.cs
- HostedBindingBehavior.cs
- FigureHelper.cs
- AutomationIdentifier.cs
- WindowsRichEditRange.cs
- WebPartVerb.cs
- DataGridViewCell.cs
- M3DUtil.cs
- BooleanStorage.cs
- RequestQueryParser.cs
- GridSplitterAutomationPeer.cs
- LogicalChannel.cs
- MimeMultiPart.cs
- AssemblyFilter.cs
- DataBoundControl.cs
- ExpanderAutomationPeer.cs
- SourceSwitch.cs
- CreateUserErrorEventArgs.cs
- listitem.cs
- FormatConvertedBitmap.cs
- webbrowsersite.cs
- InstanceDataCollectionCollection.cs
- WebBrowserNavigatingEventHandler.cs
- InternalEnumValidator.cs
- InfoCardArgumentException.cs
- KnownBoxes.cs
- IndependentAnimationStorage.cs
- CultureInfoConverter.cs
- EmulateRecognizeCompletedEventArgs.cs
- InstanceLockTracking.cs
- XhtmlBasicControlAdapter.cs
- ConnectionStringsSection.cs
- DoubleLinkListEnumerator.cs
- SBCSCodePageEncoding.cs
- TemplateControlBuildProvider.cs
- ArraySubsetEnumerator.cs
- ZipPackagePart.cs
- ToolboxItemWrapper.cs
- PrivilegeNotHeldException.cs
- SqlParameterCollection.cs
- TargetParameterCountException.cs
- SQLMoneyStorage.cs
- DefaultDialogButtons.cs
- MappingException.cs
- BaseValidator.cs
- ServicePoint.cs
- LayoutTable.cs
- PolicyManager.cs
- ITextView.cs
- HitTestParameters3D.cs
- ThousandthOfEmRealDoubles.cs
- Graph.cs
- CommentEmitter.cs
- EmptyEnumerable.cs
- Configuration.cs
- ApplicationSecurityInfo.cs
- NumericExpr.cs
- StylusEditingBehavior.cs
- DataControlCommands.cs
- MSG.cs
- WorkerRequest.cs
- SpnegoTokenProvider.cs
- LZCodec.cs
- WebPartDeleteVerb.cs
- LoginCancelEventArgs.cs
- Renderer.cs
- ImageMap.cs
- DrawToolTipEventArgs.cs
- JpegBitmapDecoder.cs
- RegexCompilationInfo.cs