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
- PriorityChain.cs
- RegistrySecurity.cs
- HScrollBar.cs
- UnorderedHashRepartitionStream.cs
- WebContext.cs
- iisPickupDirectory.cs
- ImageListStreamer.cs
- DynamicRenderer.cs
- SortQuery.cs
- PostBackTrigger.cs
- PermissionSet.cs
- IdentityHolder.cs
- GridViewHeaderRowPresenter.cs
- EdmSchemaError.cs
- TransformGroup.cs
- TextTreeRootTextBlock.cs
- StrokeCollectionConverter.cs
- ToolStripComboBox.cs
- DBConnectionString.cs
- WindowsListViewItem.cs
- XmlDigitalSignatureProcessor.cs
- ProcessHost.cs
- ToolBarPanel.cs
- LinkedList.cs
- MobileUserControl.cs
- AuthenticateEventArgs.cs
- TemplateInstanceAttribute.cs
- Quack.cs
- AssertFilter.cs
- ValidatorCollection.cs
- PackWebResponse.cs
- XmlEncodedRawTextWriter.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- AssemblyUtil.cs
- NotifyParentPropertyAttribute.cs
- OutgoingWebRequestContext.cs
- WinFormsSpinner.cs
- ListMarkerLine.cs
- QueryInterceptorAttribute.cs
- RegistryPermission.cs
- DataColumnMappingCollection.cs
- infer.cs
- TextEffectResolver.cs
- LiteralTextContainerControlBuilder.cs
- EpmContentDeSerializer.cs
- LinearGradientBrush.cs
- ResourceBinder.cs
- PrinterSettings.cs
- Int32RectValueSerializer.cs
- MenuCommandService.cs
- DataGridPageChangedEventArgs.cs
- PocoEntityKeyStrategy.cs
- DecimalAnimationUsingKeyFrames.cs
- DataServiceHostFactory.cs
- DataList.cs
- Color.cs
- InstalledFontCollection.cs
- DirectionalLight.cs
- WindowsGraphics2.cs
- RIPEMD160Managed.cs
- ArgumentValidation.cs
- ParseNumbers.cs
- TrackingLocationCollection.cs
- HtmlInputImage.cs
- HttpDebugHandler.cs
- Error.cs
- ItemType.cs
- ListViewItemSelectionChangedEvent.cs
- FunctionMappingTranslator.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- Utilities.cs
- XsltSettings.cs
- ExpressionBindingCollection.cs
- ScriptDescriptor.cs
- SapiAttributeParser.cs
- SqlWorkflowInstanceStore.cs
- XpsThumbnail.cs
- PagesChangedEventArgs.cs
- DataGridViewLinkCell.cs
- CmsInterop.cs
- SessionParameter.cs
- EventWaitHandleSecurity.cs
- SafeFileHandle.cs
- WebPartDisplayModeEventArgs.cs
- ComAdminInterfaces.cs
- ContractComponent.cs
- CacheRequest.cs
- ToggleButton.cs
- TableColumn.cs
- FormatPage.cs
- Propagator.cs
- SkipQueryOptionExpression.cs
- StorageConditionPropertyMapping.cs
- CompilerTypeWithParams.cs
- RichTextBox.cs
- XPathNavigatorReader.cs
- LineUtil.cs
- CmsInterop.cs
- FlowDocument.cs
- SqlXml.cs