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
- activationcontext.cs
- InvokePatternIdentifiers.cs
- SkewTransform.cs
- TraceContextRecord.cs
- ConfigurationElement.cs
- CodeCatchClause.cs
- ContentOnlyMessage.cs
- XmlDictionaryReaderQuotasElement.cs
- ProvidersHelper.cs
- CacheMode.cs
- TemplateInstanceAttribute.cs
- AssemblyBuilder.cs
- BaseResourcesBuildProvider.cs
- ServiceModelActivationSectionGroup.cs
- CodeGen.cs
- ListViewDataItem.cs
- SqlWriter.cs
- CodeMemberField.cs
- JsonFormatReaderGenerator.cs
- ListSortDescriptionCollection.cs
- RenderOptions.cs
- SignatureResourcePool.cs
- ReflectPropertyDescriptor.cs
- DNS.cs
- CharEnumerator.cs
- LicenseManager.cs
- ColumnWidthChangingEvent.cs
- MetadataItemEmitter.cs
- HtmlTextArea.cs
- CqlBlock.cs
- RowBinding.cs
- TemplateComponentConnector.cs
- CompilationUtil.cs
- mansign.cs
- EqualityComparer.cs
- SqlDataSourceSelectingEventArgs.cs
- StaticDataManager.cs
- PasswordRecovery.cs
- Win32.cs
- RegularExpressionValidator.cs
- XmlSchemaExporter.cs
- DesignerAttribute.cs
- ScriptControl.cs
- KeyValueInternalCollection.cs
- AppDomainManager.cs
- RandomNumberGenerator.cs
- DbDataSourceEnumerator.cs
- DataExpression.cs
- GroupedContextMenuStrip.cs
- AnnouncementSendsAsyncResult.cs
- Window.cs
- GPPOINTF.cs
- FormatSettings.cs
- UnwrappedTypesXmlSerializerManager.cs
- Visual3D.cs
- OrderedDictionary.cs
- WebPartCatalogAddVerb.cs
- JsonWriter.cs
- ColorConvertedBitmap.cs
- CachingHintValidation.cs
- NativeMethods.cs
- Serializer.cs
- WrappedKeySecurityToken.cs
- TypeSystemProvider.cs
- StateChangeEvent.cs
- odbcmetadatacollectionnames.cs
- cookie.cs
- ListControlActionList.cs
- ListViewContainer.cs
- AsyncResult.cs
- SingleResultAttribute.cs
- XmlSchemaSearchPattern.cs
- VarInfo.cs
- WebBrowserUriTypeConverter.cs
- SerialPinChanges.cs
- DataServiceBuildProvider.cs
- PseudoWebRequest.cs
- EntityDataSource.cs
- MinimizableAttributeTypeConverter.cs
- HttpRequest.cs
- ImageMap.cs
- ProcessRequestAsyncResult.cs
- XamlVector3DCollectionSerializer.cs
- DesignerDataConnection.cs
- XmlUTF8TextReader.cs
- IdentityElement.cs
- DelayedRegex.cs
- OdbcFactory.cs
- MatrixConverter.cs
- ResourceManagerWrapper.cs
- Material.cs
- COM2EnumConverter.cs
- XmlCodeExporter.cs
- ProcessInputEventArgs.cs
- CommonDialog.cs
- EnvelopedPkcs7.cs
- ExceptionUtility.cs
- EmulateRecognizeCompletedEventArgs.cs
- ManipulationDeltaEventArgs.cs
- ErrorHandler.cs