Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Pipeline / ContractHandle.cs / 1305376 / ContractHandle.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ContractHandle ** ** Purpose: ** ===========================================================*/ using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.AddIn.Contract; using System.AddIn; using System.Runtime.Remoting.Lifetime; using System.Runtime.Remoting; using System.Runtime.Serialization; using System.Diagnostics.Contracts; namespace System.AddIn.Pipeline { ////// public class ContractHandle : IDisposable { private IContract m_contract; private int? m_token; internal const string s_appDomainOwner = "System.AddIn_Owner_Contract"; public ContractHandle(IContract contract) { if (contract == null) throw new ArgumentNullException("contract"); System.Diagnostics.Contracts.Contract.EndContractBlock(); m_contract = contract; m_token = m_contract.AcquireLifetimeToken(); } public IContract Contract { get { return m_contract; } } ~ContractHandle() { Dispose(false); } protected virtual void Dispose(bool disposing) { if (disposing) { // managed cleanup would go here } if (m_token != null) { try { // See comments in AddInController for why its OK to call into the // transparentProxy from this objects Finalize member. m_contract.RevokeLifetimeToken((int)m_token); } catch (AppDomainUnloadedException) { } catch (RemotingException) { } catch (SerializationException) {} finally { m_token = null; m_contract = null; } } } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="AppDomain")] public static bool ContractOwnsAppDomain(IContract contract, AppDomain domain) { if (domain == null) throw new ArgumentNullException("domain"); if (contract == null) throw new ArgumentNullException("contract"); System.Diagnostics.Contracts.Contract.EndContractBlock(); return domain.GetData(s_appDomainOwner) == contract; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="AppDomain")] public static IContract AppDomainOwner(AppDomain domain) { if (domain == null) throw new ArgumentNullException("domain"); System.Diagnostics.Contracts.Contract.EndContractBlock(); return (IContract)domain.GetData(s_appDomainOwner); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HitTestFilterBehavior.cs
- DocumentGridPage.cs
- SubclassTypeValidator.cs
- ImageListStreamer.cs
- SynchronizingStream.cs
- DataGridViewColumnConverter.cs
- ToolStripMenuItem.cs
- Matrix3DValueSerializer.cs
- Brush.cs
- FragmentQuery.cs
- ShaperBuffers.cs
- COM2ExtendedBrowsingHandler.cs
- StyleXamlParser.cs
- ConfigurationValidatorAttribute.cs
- cookiecollection.cs
- SubMenuStyleCollection.cs
- HttpCapabilitiesSectionHandler.cs
- MarkupExtensionReturnTypeAttribute.cs
- XmlSchemaSimpleContent.cs
- ImageSource.cs
- ObjectManager.cs
- ProfileGroupSettingsCollection.cs
- MetadataItem_Static.cs
- ProcessModule.cs
- EntityCollectionChangedParams.cs
- Track.cs
- OutOfMemoryException.cs
- AttributeData.cs
- DesignDataSource.cs
- MediaElement.cs
- TableRowCollection.cs
- BackEase.cs
- DataGridViewCellMouseEventArgs.cs
- DbConnectionPool.cs
- BCLDebug.cs
- TransactionState.cs
- SafeHGlobalHandleCritical.cs
- ToolStripItemGlyph.cs
- UnsafeNativeMethods.cs
- GridViewItemAutomationPeer.cs
- OverflowException.cs
- DataProviderNameConverter.cs
- AffineTransform3D.cs
- DelegateTypeInfo.cs
- Polygon.cs
- EventLogEntryCollection.cs
- CodeSnippetCompileUnit.cs
- AuthenticationService.cs
- UnsafeNativeMethodsMilCoreApi.cs
- PrintDocument.cs
- EntityRecordInfo.cs
- KoreanCalendar.cs
- MenuItemBinding.cs
- MobileSysDescriptionAttribute.cs
- FormClosingEvent.cs
- DataGridTextBox.cs
- JpegBitmapEncoder.cs
- HttpListener.cs
- ControlBuilderAttribute.cs
- ListenerElementsCollection.cs
- Hashtable.cs
- Missing.cs
- ColorMap.cs
- CodeVariableDeclarationStatement.cs
- ChannelServices.cs
- MenuItemStyleCollection.cs
- WebPartUserCapability.cs
- BuildProvider.cs
- ToolboxItemAttribute.cs
- WebPartMenuStyle.cs
- _KerberosClient.cs
- DateTimeConstantAttribute.cs
- StateItem.cs
- RowVisual.cs
- ProfileEventArgs.cs
- SqlCacheDependency.cs
- GridViewDeleteEventArgs.cs
- SortDescriptionCollection.cs
- WindowsGraphics2.cs
- MulticastNotSupportedException.cs
- CroppedBitmap.cs
- DataGridCaption.cs
- WindowsTab.cs
- SqlStatistics.cs
- ProjectionQueryOptionExpression.cs
- _SSPIWrapper.cs
- Page.cs
- PeerInputChannel.cs
- HandlerMappingMemo.cs
- MessageDispatch.cs
- MSAANativeProvider.cs
- SymLanguageType.cs
- DbFunctionCommandTree.cs
- ContextMenuAutomationPeer.cs
- SmtpSection.cs
- InstalledFontCollection.cs
- ChannelBinding.cs
- TypeDescriptorContext.cs
- QuaternionKeyFrameCollection.cs
- WindowsProgressbar.cs