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
- FillRuleValidation.cs
- DocumentReference.cs
- ConnectionOrientedTransportBindingElement.cs
- SqlNode.cs
- SqlWriter.cs
- SelectionUIHandler.cs
- FamilyCollection.cs
- ControlBuilder.cs
- ProxyWebPartConnectionCollection.cs
- MatrixCamera.cs
- VisualProxy.cs
- DatagridviewDisplayedBandsData.cs
- PipelineModuleStepContainer.cs
- TypedCompletedAsyncResult.cs
- HttpCacheVaryByContentEncodings.cs
- FileLogRecordHeader.cs
- CapabilitiesPattern.cs
- WorkflowMarkupElementEventArgs.cs
- indexingfiltermarshaler.cs
- FolderBrowserDialogDesigner.cs
- ClientSession.cs
- SizeAnimationClockResource.cs
- DropDownList.cs
- ControlPaint.cs
- MenuItemStyleCollectionEditor.cs
- IssuanceLicense.cs
- AuthStoreRoleProvider.cs
- ListViewItemMouseHoverEvent.cs
- SizeConverter.cs
- OleDbInfoMessageEvent.cs
- CollectionBuilder.cs
- HttpListenerContext.cs
- WebPartConnectionsCancelVerb.cs
- DigitalSignature.cs
- Collection.cs
- TypeListConverter.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- TraceLog.cs
- TabControlDesigner.cs
- ExpressionBuilder.cs
- WorkflowInstanceAbortedRecord.cs
- ProcessModelSection.cs
- Base64Encoding.cs
- filewebrequest.cs
- StreamAsIStream.cs
- GlobalProxySelection.cs
- figurelengthconverter.cs
- HtmlTextArea.cs
- EntityTemplateFactory.cs
- ListControl.cs
- XmlNavigatorFilter.cs
- DoubleConverter.cs
- WorkflowInstanceExtensionProvider.cs
- Variable.cs
- Brushes.cs
- PeerTransportSecuritySettings.cs
- PeerContact.cs
- ReferencedCollectionType.cs
- AnimationStorage.cs
- TextBoxDesigner.cs
- OleDbParameterCollection.cs
- SoapExtensionReflector.cs
- BeginStoryboard.cs
- QueryCacheKey.cs
- BitHelper.cs
- ErrorWrapper.cs
- ToolStripContentPanelRenderEventArgs.cs
- MatrixCamera.cs
- AsnEncodedData.cs
- XsltException.cs
- WebPartConnectionsConnectVerb.cs
- PointCollectionConverter.cs
- BufferModesCollection.cs
- SmtpSection.cs
- BaseConfigurationRecord.cs
- CancellationToken.cs
- PackageRelationshipCollection.cs
- RuleSettingsCollection.cs
- WindowsListViewGroupHelper.cs
- HashCodeCombiner.cs
- DataGridViewCell.cs
- MsmqOutputSessionChannel.cs
- ObjectQueryExecutionPlan.cs
- ClickablePoint.cs
- PrinterUnitConvert.cs
- WarningException.cs
- WFItemsToSpacerVisibility.cs
- TaskFactory.cs
- BasePattern.cs
- AddValidationError.cs
- StrongTypingException.cs
- CircleHotSpot.cs
- SecurityCriticalDataForSet.cs
- RadioButtonAutomationPeer.cs
- DockPanel.cs
- EmissiveMaterial.cs
- StorageComplexPropertyMapping.cs
- GenericEnumerator.cs
- TdsParserStaticMethods.cs
- BypassElementCollection.cs