Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- SubstitutionList.cs
- bidPrivateBase.cs
- NumericPagerField.cs
- Stream.cs
- FrameworkElement.cs
- CapabilitiesUse.cs
- ArrayWithOffset.cs
- StickyNote.cs
- XmlNamespaceDeclarationsAttribute.cs
- PanelContainerDesigner.cs
- SystemFonts.cs
- ProgramNode.cs
- DataFormats.cs
- Point.cs
- CharacterString.cs
- NavigatorInvalidBodyAccessException.cs
- ObjectMemberMapping.cs
- ServiceDescriptionSerializer.cs
- AnnotationResource.cs
- RefExpr.cs
- WebPartDescription.cs
- NTAccount.cs
- UIElement.cs
- SmiMetaDataProperty.cs
- BuildManager.cs
- CheckBoxFlatAdapter.cs
- X509CertificateInitiatorServiceCredential.cs
- Brush.cs
- MetricEntry.cs
- FramingFormat.cs
- hebrewshape.cs
- ElementNotAvailableException.cs
- ListChangedEventArgs.cs
- MdImport.cs
- TransformGroup.cs
- ConstructorBuilder.cs
- InputLanguageCollection.cs
- ConstantProjectedSlot.cs
- RepeatButtonAutomationPeer.cs
- DataGridViewCellCollection.cs
- SqlCaseSimplifier.cs
- FormClosingEvent.cs
- UshortList2.cs
- FixedSOMPage.cs
- WinInet.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SQLInt16.cs
- Transaction.cs
- DataGridViewCellMouseEventArgs.cs
- XamlUtilities.cs
- EntityClientCacheKey.cs
- PropertyChangeTracker.cs
- JsonReaderDelegator.cs
- ContentType.cs
- Soap.cs
- AnnotationHelper.cs
- NoResizeSelectionBorderGlyph.cs
- XPathNavigator.cs
- StringDictionary.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- EventLogEntryCollection.cs
- XmlSerializerNamespaces.cs
- EndpointDispatcherTable.cs
- ProcessModule.cs
- XmlSchemaSimpleContentRestriction.cs
- DynamicValidator.cs
- DrawingContextWalker.cs
- _NegoStream.cs
- HtmlFormWrapper.cs
- SystemIcmpV4Statistics.cs
- TransformDescriptor.cs
- ActiveXSite.cs
- securitycriticaldataClass.cs
- UriExt.cs
- SmtpClient.cs
- BitmapSizeOptions.cs
- DataGridViewImageColumn.cs
- EventSetter.cs
- VisualBasicSettings.cs
- AsymmetricSignatureFormatter.cs
- ColorConverter.cs
- Menu.cs
- CompleteWizardStep.cs
- StyleTypedPropertyAttribute.cs
- FixedSOMFixedBlock.cs
- RangeContentEnumerator.cs
- SqlServer2KCompatibilityCheck.cs
- WindowsEditBox.cs
- SqlProviderServices.cs
- WebEventTraceProvider.cs
- DataListItem.cs
- ClientBuildManagerCallback.cs
- ProxyWebPartManager.cs
- Compensate.cs
- XmlSchemaRedefine.cs
- WmpBitmapEncoder.cs
- sqlser.cs
- VirtualPath.cs
- InheritedPropertyChangedEventArgs.cs
- StorageComplexPropertyMapping.cs