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
- AutomationPeer.cs
- WindowsTab.cs
- BamlRecordReader.cs
- TransformConverter.cs
- Vector3DConverter.cs
- TemplatePagerField.cs
- ColumnMapTranslator.cs
- NotificationContext.cs
- Int32AnimationBase.cs
- PropertyChangedEventArgs.cs
- EmptyQuery.cs
- OrderedParallelQuery.cs
- Exception.cs
- PointCollection.cs
- PluralizationServiceUtil.cs
- ContentFilePart.cs
- ListView.cs
- Point3D.cs
- BindableAttribute.cs
- DataGridViewCellLinkedList.cs
- PathGeometry.cs
- Listbox.cs
- AppliesToBehaviorDecisionTable.cs
- FileAuthorizationModule.cs
- UrlSyndicationContent.cs
- BaseContextMenu.cs
- InputLanguageSource.cs
- SemanticTag.cs
- ItemsPanelTemplate.cs
- PatternMatcher.cs
- DesignSurfaceEvent.cs
- TransformerInfoCollection.cs
- GrammarBuilderRuleRef.cs
- AssemblyContextControlItem.cs
- UidManager.cs
- DesignerVerbCollection.cs
- CustomBindingElement.cs
- IsolatedStorage.cs
- HWStack.cs
- OutputCacheSettingsSection.cs
- COM2IDispatchConverter.cs
- ClientSettingsStore.cs
- BamlTreeMap.cs
- SafeLibraryHandle.cs
- XpsColorContext.cs
- InputDevice.cs
- TextTreeDeleteContentUndoUnit.cs
- EditBehavior.cs
- VarRemapper.cs
- DataGridTablesFactory.cs
- HttpHandlerAction.cs
- ExtenderHelpers.cs
- TraceSource.cs
- COM2ColorConverter.cs
- EdmToObjectNamespaceMap.cs
- ToolStripPanelRenderEventArgs.cs
- ErrorWebPart.cs
- TemplateBaseAction.cs
- BitmapEffect.cs
- CodeCompiler.cs
- Transform.cs
- SqlXml.cs
- OracleNumber.cs
- XamlWrapperReaders.cs
- PathFigure.cs
- DesignerCategoryAttribute.cs
- IdentitySection.cs
- IPPacketInformation.cs
- EDesignUtil.cs
- WorkflowInstanceExtensionProvider.cs
- ModifierKeysConverter.cs
- OleDbTransaction.cs
- DriveNotFoundException.cs
- _BaseOverlappedAsyncResult.cs
- DashStyles.cs
- StickyNoteContentControl.cs
- ResourcePermissionBaseEntry.cs
- AudioFormatConverter.cs
- NavigatorOutput.cs
- CharacterMetrics.cs
- WebConfigurationFileMap.cs
- LinkLabelLinkClickedEvent.cs
- ContainerFilterService.cs
- CodeVariableReferenceExpression.cs
- SqlIdentifier.cs
- StoryFragments.cs
- WebPartMenuStyle.cs
- EmbeddedMailObjectCollectionEditor.cs
- WsiProfilesElementCollection.cs
- FixedPageStructure.cs
- HtmlInputHidden.cs
- DataServiceEntityAttribute.cs
- StaticFileHandler.cs
- FileUpload.cs
- dataobject.cs
- WeakReferenceKey.cs
- WebPartConnectionsCancelEventArgs.cs
- WebPartConnectionsCancelEventArgs.cs
- DBBindings.cs
- _PooledStream.cs