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
- DispatcherSynchronizationContext.cs
- Version.cs
- PropertyStore.cs
- SafeProcessHandle.cs
- XmlAnyElementAttribute.cs
- UnknownBitmapEncoder.cs
- SmiXetterAccessMap.cs
- ItemCollectionEditor.cs
- ConditionalAttribute.cs
- ControllableStoryboardAction.cs
- FormViewDeletedEventArgs.cs
- Gdiplus.cs
- Point3D.cs
- FixedHighlight.cs
- XpsFilter.cs
- RequestCacheManager.cs
- XmlReader.cs
- UpDownEvent.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- ColumnBinding.cs
- IndexerNameAttribute.cs
- AutomationElementIdentifiers.cs
- ToolStripDropDownDesigner.cs
- RegisteredExpandoAttribute.cs
- UICuesEvent.cs
- DoubleCollection.cs
- SoapElementAttribute.cs
- TextBoxAutomationPeer.cs
- StringUtil.cs
- TextFormatterHost.cs
- GreenMethods.cs
- UntrustedRecipientException.cs
- CultureInfo.cs
- TextEditorContextMenu.cs
- SiteMapPath.cs
- DataPagerFieldCollection.cs
- ClonableStack.cs
- ParamArrayAttribute.cs
- HorizontalAlignConverter.cs
- AppSettingsExpressionBuilder.cs
- DownloadProgressEventArgs.cs
- ServiceOperationUIEditor.cs
- CompModSwitches.cs
- DataGridViewSelectedRowCollection.cs
- StrokeNodeEnumerator.cs
- LockCookie.cs
- IsolatedStorageFile.cs
- Html32TextWriter.cs
- HtmlTableRow.cs
- SqlServices.cs
- Point4D.cs
- WebRequestModulesSection.cs
- SimpleApplicationHost.cs
- Popup.cs
- OdbcTransaction.cs
- DataSourceGeneratorException.cs
- WebPageTraceListener.cs
- TraceHandler.cs
- HttpClientCertificate.cs
- TextTreeRootTextBlock.cs
- ClientSideQueueItem.cs
- SmiEventSink.cs
- BlurEffect.cs
- PersonalizablePropertyEntry.cs
- ILGenerator.cs
- TrustSection.cs
- UnsafeMethods.cs
- activationcontext.cs
- LOSFormatter.cs
- DataGridViewBand.cs
- QilDataSource.cs
- BroadcastEventHelper.cs
- DocumentOrderQuery.cs
- ActiveDesignSurfaceEvent.cs
- CircleHotSpot.cs
- FlowDocumentReaderAutomationPeer.cs
- AsymmetricKeyExchangeFormatter.cs
- MultiView.cs
- ValidationPropertyAttribute.cs
- Attributes.cs
- SoapClientMessage.cs
- _Connection.cs
- BamlBinaryReader.cs
- HttpAsyncResult.cs
- wgx_commands.cs
- ConfigXmlElement.cs
- TransformGroup.cs
- FacetValues.cs
- CommandBinding.cs
- FontSizeConverter.cs
- ActivationArguments.cs
- MutableAssemblyCacheEntry.cs
- CommandLineParser.cs
- CallSiteBinder.cs
- TableLayoutRowStyleCollection.cs
- BuiltInExpr.cs
- TextBlockAutomationPeer.cs
- StoreItemCollection.cs
- TypeNameConverter.cs
- NamespaceTable.cs