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
- DragCompletedEventArgs.cs
- PaintValueEventArgs.cs
- ClockController.cs
- FileLevelControlBuilderAttribute.cs
- DoubleAnimationUsingKeyFrames.cs
- SqlDataRecord.cs
- Figure.cs
- DataGridViewCellLinkedList.cs
- InfoCardProofToken.cs
- IndexedGlyphRun.cs
- ExtensionQuery.cs
- ConnectionOrientedTransportChannelListener.cs
- TabControlCancelEvent.cs
- EnterpriseServicesHelper.cs
- AuthorizationContext.cs
- MenuTracker.cs
- EntityCommandCompilationException.cs
- SmtpFailedRecipientException.cs
- SplitterEvent.cs
- ProjectionPathSegment.cs
- GridViewHeaderRowPresenter.cs
- UInt64Storage.cs
- ThrowHelper.cs
- RelationshipConstraintValidator.cs
- Console.cs
- ControlAdapter.cs
- ProjectionCamera.cs
- CFStream.cs
- BitmapSizeOptions.cs
- RawStylusInputCustomDataList.cs
- StringConverter.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- TextServicesPropertyRanges.cs
- ListItemCollection.cs
- CodeEntryPointMethod.cs
- PropertyNames.cs
- Calendar.cs
- EmptyImpersonationContext.cs
- Baml2006ReaderSettings.cs
- ColorMatrix.cs
- ResourceExpressionBuilder.cs
- ModelTreeEnumerator.cs
- XamlBuildTaskServices.cs
- QilNode.cs
- CqlLexer.cs
- DesignOnlyAttribute.cs
- StrongTypingException.cs
- httpstaticobjectscollection.cs
- CachedTypeface.cs
- XmlSerializerFactory.cs
- HtmlTableRow.cs
- _SslState.cs
- DataKeyArray.cs
- XPathMultyIterator.cs
- XmlSchemaGroupRef.cs
- Solver.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- Geometry.cs
- PropertyTabChangedEvent.cs
- ListViewEditEventArgs.cs
- SharedUtils.cs
- ResolveMatchesApril2005.cs
- ItemAutomationPeer.cs
- PagesChangedEventArgs.cs
- UInt16Storage.cs
- BinaryConverter.cs
- CaseInsensitiveOrdinalStringComparer.cs
- Renderer.cs
- IPPacketInformation.cs
- ActiveXSite.cs
- MenuEventArgs.cs
- ResourcesChangeInfo.cs
- RC2.cs
- LinearKeyFrames.cs
- XmlILCommand.cs
- XmlValidatingReader.cs
- StoreContentChangedEventArgs.cs
- ElapsedEventArgs.cs
- ForwardPositionQuery.cs
- SoapCodeExporter.cs
- ResourceDictionaryCollection.cs
- ComponentResourceKey.cs
- CustomAttributeFormatException.cs
- MatrixUtil.cs
- XPathException.cs
- BypassElement.cs
- DataSourceCache.cs
- HttpException.cs
- TransformDescriptor.cs
- SoapIncludeAttribute.cs
- MethodAccessException.cs
- DbConnectionHelper.cs
- PrintDocument.cs
- SubMenuStyleCollection.cs
- ColorAnimationBase.cs
- AutomationPropertyChangedEventArgs.cs
- _Semaphore.cs
- ScriptServiceAttribute.cs
- AsymmetricSecurityProtocolFactory.cs
- ConfigXmlText.cs