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
- PackagePartCollection.cs
- ContainerVisual.cs
- DynamicPhysicalDiscoSearcher.cs
- SerialReceived.cs
- BlobPersonalizationState.cs
- KnownColorTable.cs
- MarshalDirectiveException.cs
- PopupRoot.cs
- VersionPair.cs
- BookmarkManager.cs
- DataGridBoolColumn.cs
- HistoryEventArgs.cs
- CodeObjectCreateExpression.cs
- ResourceType.cs
- BamlBinaryWriter.cs
- Odbc32.cs
- TemplateField.cs
- ServiceProviders.cs
- ExtendedProperty.cs
- BasePattern.cs
- ApplicationFileParser.cs
- CustomErrorsSection.cs
- OpenFileDialog.cs
- Encoder.cs
- StringCollection.cs
- RedirectionProxy.cs
- SortableBindingList.cs
- FormViewPageEventArgs.cs
- ResourceDisplayNameAttribute.cs
- Visitor.cs
- OleDbPropertySetGuid.cs
- CmsUtils.cs
- SegmentInfo.cs
- InsufficientMemoryException.cs
- ListViewItem.cs
- EventToken.cs
- DataContractSerializerFaultFormatter.cs
- ConfigurationPropertyCollection.cs
- Vector3DCollectionValueSerializer.cs
- MetadataItemEmitter.cs
- SoapInteropTypes.cs
- ToolStripSeparatorRenderEventArgs.cs
- ExecutionEngineException.cs
- MapPathBasedVirtualPathProvider.cs
- NumberSubstitution.cs
- PerformanceCounters.cs
- WrappedIUnknown.cs
- SystemInfo.cs
- Window.cs
- EqualityArray.cs
- ConnectionStringsSection.cs
- CannotUnloadAppDomainException.cs
- EqualityArray.cs
- SystemColors.cs
- ObjectDataSourceStatusEventArgs.cs
- HMACSHA512.cs
- FollowerQueueCreator.cs
- DataGridItemCollection.cs
- LicFileLicenseProvider.cs
- HtmlToClrEventProxy.cs
- CompiledRegexRunnerFactory.cs
- KeyTime.cs
- DataColumnMappingCollection.cs
- input.cs
- PointConverter.cs
- TextRangeAdaptor.cs
- WpfKnownType.cs
- SecurityCapabilities.cs
- DocumentApplicationJournalEntry.cs
- WmlListAdapter.cs
- backend.cs
- Closure.cs
- HttpRuntimeSection.cs
- SqlColumnizer.cs
- HttpRuntime.cs
- SystemFonts.cs
- Type.cs
- BamlWriter.cs
- XMLDiffLoader.cs
- XamlSerializer.cs
- ControlBuilderAttribute.cs
- Imaging.cs
- WebPartDisplayModeCollection.cs
- BamlLocalizabilityResolver.cs
- OutKeywords.cs
- PointAnimation.cs
- BaseCAMarshaler.cs
- HttpCacheVaryByContentEncodings.cs
- BackStopAuthenticationModule.cs
- BackEase.cs
- SafeRightsManagementHandle.cs
- DataGridPagerStyle.cs
- XmlSchemaAnyAttribute.cs
- XmlNodeList.cs
- GridSplitter.cs
- ScrollChangedEventArgs.cs
- WSMessageEncoding.cs
- InfoCardSymmetricCrypto.cs
- Module.cs
- HttpServerVarsCollection.cs