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
- SubstitutionList.cs
- DataGridViewRowPostPaintEventArgs.cs
- MailAddressCollection.cs
- ExtensionQuery.cs
- Panel.cs
- HealthMonitoringSection.cs
- InvalidMessageContractException.cs
- SslStreamSecurityUpgradeProvider.cs
- XamlTemplateSerializer.cs
- MeasureData.cs
- RtfToXamlLexer.cs
- HtmlMeta.cs
- DataGridViewColumnTypePicker.cs
- ValueExpressions.cs
- ServerIdentity.cs
- PeerCollaborationPermission.cs
- PrincipalPermission.cs
- XPathDocumentNavigator.cs
- BitVector32.cs
- ErrorInfoXmlDocument.cs
- EtwTrackingBehaviorElement.cs
- RtfNavigator.cs
- Merger.cs
- IriParsingElement.cs
- ExtendedPropertyCollection.cs
- safelinkcollection.cs
- SchemaNotation.cs
- ResourceReferenceKeyNotFoundException.cs
- ErasingStroke.cs
- StickyNoteAnnotations.cs
- InstanceBehavior.cs
- RuntimeResourceSet.cs
- SocketPermission.cs
- NamedPipeChannelFactory.cs
- BinaryMessageEncoder.cs
- RevocationPoint.cs
- TreeViewHitTestInfo.cs
- XamlRtfConverter.cs
- CodeSnippetStatement.cs
- XmlComplianceUtil.cs
- StateRuntime.cs
- DataGridViewButtonColumn.cs
- HttpListenerContext.cs
- ObjectDataSourceSelectingEventArgs.cs
- PersonalizationStateInfo.cs
- ImageField.cs
- Command.cs
- TextBoxView.cs
- SystemDiagnosticsSection.cs
- Misc.cs
- DbException.cs
- DataGridColumnHeaderCollection.cs
- SmiTypedGetterSetter.cs
- TableHeaderCell.cs
- RemotingSurrogateSelector.cs
- InlineUIContainer.cs
- TabletDeviceInfo.cs
- BindingRestrictions.cs
- DataViewSettingCollection.cs
- Matrix.cs
- ArrayElementGridEntry.cs
- XmlSignatureManifest.cs
- HostedElements.cs
- Update.cs
- Validator.cs
- TextElementEditingBehaviorAttribute.cs
- ObjectComplexPropertyMapping.cs
- CharStorage.cs
- BlockExpression.cs
- DesignerGenericWebPart.cs
- ObjectDataSourceDisposingEventArgs.cs
- SerializationEventsCache.cs
- AdapterDictionary.cs
- ComponentManagerBroker.cs
- WebPartEventArgs.cs
- TextAdaptor.cs
- SparseMemoryStream.cs
- ValidatorUtils.cs
- TextEditorCharacters.cs
- DateTimeOffset.cs
- PersonalizationDictionary.cs
- FixedSOMTextRun.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- SqlStream.cs
- MarkupProperty.cs
- IncrementalHitTester.cs
- URIFormatException.cs
- ObjectComplexPropertyMapping.cs
- GridViewUpdateEventArgs.cs
- LinqDataView.cs
- HtmlImage.cs
- ToolStripDropTargetManager.cs
- KeyValuePairs.cs
- DrawingContextWalker.cs
- RequestSecurityTokenForGetBrowserToken.cs
- WorkflowItemPresenter.cs
- ImageDrawing.cs
- EventListener.cs
- ListView.cs
- TCEAdapterGenerator.cs