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
- SoapIncludeAttribute.cs
- WebPartsPersonalization.cs
- EncodingNLS.cs
- ProviderCollection.cs
- SQLDecimal.cs
- StoreItemCollection.Loader.cs
- PlatformCulture.cs
- Container.cs
- ChangeNode.cs
- ClientProxyGenerator.cs
- PersonalizationStateInfo.cs
- XmlIlTypeHelper.cs
- CultureInfoConverter.cs
- AssertSection.cs
- ListBox.cs
- __ConsoleStream.cs
- X509SecurityToken.cs
- ProfileBuildProvider.cs
- FixUpCollection.cs
- WpfKnownMemberInvoker.cs
- FlowLayout.cs
- NameTable.cs
- ToolStripLocationCancelEventArgs.cs
- BitmapCacheBrush.cs
- DesignerForm.cs
- TextOptions.cs
- GridViewDeleteEventArgs.cs
- EventRouteFactory.cs
- PageResolution.cs
- ConfigurationElement.cs
- TargetInvocationException.cs
- NativeMethods.cs
- ReturnValue.cs
- XmlSchemaInclude.cs
- SessionStateContainer.cs
- FirewallWrapper.cs
- OracleConnectionString.cs
- RegexReplacement.cs
- QuotedPrintableStream.cs
- UpdateCommand.cs
- DetailsViewDeletedEventArgs.cs
- SoapExtensionReflector.cs
- LinkLabel.cs
- ClientScriptManagerWrapper.cs
- Stacktrace.cs
- CopyOfAction.cs
- GroupStyle.cs
- ActivityTypeResolver.xaml.cs
- OperandQuery.cs
- DesignerDataSourceView.cs
- SystemKeyConverter.cs
- SqlRewriteScalarSubqueries.cs
- TextFindEngine.cs
- ConditionBrowserDialog.cs
- ColorContext.cs
- ActivityInterfaces.cs
- PolicyImporterElementCollection.cs
- OverlappedAsyncResult.cs
- BitmapVisualManager.cs
- IteratorAsyncResult.cs
- SvcMapFileSerializer.cs
- DataListCommandEventArgs.cs
- DataListCommandEventArgs.cs
- ThicknessAnimationBase.cs
- ReaderWriterLockSlim.cs
- OverlappedAsyncResult.cs
- RelationshipEndCollection.cs
- DependencySource.cs
- ACL.cs
- TextShapeableCharacters.cs
- EpmContentSerializerBase.cs
- ConfigurationFileMap.cs
- MimePart.cs
- ProtocolViolationException.cs
- WrappedReader.cs
- _TimerThread.cs
- WorkflowApplicationTerminatedException.cs
- RegexWorker.cs
- HealthMonitoringSection.cs
- XamlPoint3DCollectionSerializer.cs
- Classification.cs
- BitArray.cs
- ServiceModelInstallComponent.cs
- ReaderWriterLockSlim.cs
- TransactionValidationBehavior.cs
- BamlResourceSerializer.cs
- HtmlTextArea.cs
- OdbcEnvironmentHandle.cs
- FrameDimension.cs
- ContentDesigner.cs
- OverloadGroupAttribute.cs
- InkCanvasSelectionAdorner.cs
- validation.cs
- NavigationHelper.cs
- HtmlInputCheckBox.cs
- WorkerRequest.cs
- ResourceSet.cs
- AccessText.cs
- ExtractedStateEntry.cs
- BamlLocalizableResource.cs