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
- RectangleGeometry.cs
- RoamingStoreFileUtility.cs
- Set.cs
- DataTableTypeConverter.cs
- SortDescriptionCollection.cs
- OperationPerformanceCounters.cs
- RightsManagementEncryptionTransform.cs
- TypeConverterHelper.cs
- ConfigurationPermission.cs
- ListParagraph.cs
- BamlLocalizer.cs
- DataServiceRequestOfT.cs
- Source.cs
- WindowsListViewSubItem.cs
- ValidatorUtils.cs
- SqlIdentifier.cs
- HMACMD5.cs
- XamlSerializerUtil.cs
- ColumnCollection.cs
- Quaternion.cs
- MailAddressCollection.cs
- XmlSchemaSimpleType.cs
- SqlClientPermission.cs
- ExceptionValidationRule.cs
- SystemSounds.cs
- FixedNode.cs
- DataControlButton.cs
- CompModHelpers.cs
- InitializationEventAttribute.cs
- MetadataProperty.cs
- XsltQilFactory.cs
- Point3DCollectionConverter.cs
- MultiPageTextView.cs
- DocumentPageView.cs
- ReadWriteSpinLock.cs
- HttpContext.cs
- ArrayItemReference.cs
- RbTree.cs
- Helpers.cs
- Pair.cs
- PrintingPermissionAttribute.cs
- AnnotationResourceChangedEventArgs.cs
- ModulesEntry.cs
- DataControlFieldCollection.cs
- smtppermission.cs
- ChtmlCalendarAdapter.cs
- SolidBrush.cs
- DataGridViewDataConnection.cs
- CodeSnippetTypeMember.cs
- TabItemWrapperAutomationPeer.cs
- SQLUtility.cs
- FontDialog.cs
- HwndAppCommandInputProvider.cs
- MobileCategoryAttribute.cs
- XmlSchema.cs
- Stylesheet.cs
- HtmlElementEventArgs.cs
- Set.cs
- ExtendedProtectionPolicyElement.cs
- Row.cs
- LogSwitch.cs
- HtmlValidationSummaryAdapter.cs
- ChangeNode.cs
- WpfKnownMember.cs
- DbTransaction.cs
- StringAnimationUsingKeyFrames.cs
- ItemCheckedEvent.cs
- DataSetMappper.cs
- EntitySqlQueryCacheEntry.cs
- PackageRelationship.cs
- TableLayoutPanel.cs
- DbDataAdapter.cs
- UnionCqlBlock.cs
- ToolStripSplitStackLayout.cs
- ContentDisposition.cs
- CompensateDesigner.cs
- HostnameComparisonMode.cs
- TreeViewDesigner.cs
- ConsoleTraceListener.cs
- LabelEditEvent.cs
- BindingOperations.cs
- XamlFilter.cs
- ZipIOFileItemStream.cs
- HostedImpersonationContext.cs
- TreeViewItem.cs
- DesignerHierarchicalDataSourceView.cs
- BridgeDataReader.cs
- XmlValidatingReader.cs
- OutOfMemoryException.cs
- GroupDescription.cs
- TypeLibraryHelper.cs
- ToolboxBitmapAttribute.cs
- RawUIStateInputReport.cs
- XMLSchema.cs
- TextBlock.cs
- SmtpLoginAuthenticationModule.cs
- DecimalFormatter.cs
- Dump.cs
- DiscoveryInnerClientManaged11.cs
- BooleanFunctions.cs