Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / AddInController.cs / 1305376 / AddInController.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: AddInController ** ** Purpose: Allows you to shut down an add-in, which may unload ** an AppDomain or kill an out-of-process add-in. ** ===========================================================*/ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Reflection; using System.Runtime.ConstrainedExecution; using System.Runtime.Remoting; using System.Runtime.Remoting.Lifetime; using System.Runtime.Serialization; using System.Security.Permissions; using System.Security; using System.Diagnostics; using System.AddIn.Contract; using System.AddIn.Pipeline; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { // Wrapper on AddInControllerImpl so that a ref count is kept on the Contract // keeping the addin alive while an AddInController object is alive in the host. public sealed class AddInController { private AddInControllerImpl _impl; // keep the addin alive while the controller is alive [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification="Needed to prevent remoting failures")] private Object _hostViewOfAddIn; // Prevent the addin domain from being torn down while there is a controller still alive when, for example, // Dispose is called on the HVA and the hostAdapter releases its LifetimeToken. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification="Needed for finalizer behavior")] private ContractHandle _contractHandle; internal AddInController(AddInControllerImpl impl, Object hostViewOfAddIn, ContractHandle contractHandle) { System.Diagnostics.Contracts.Contract.Requires(impl != null); _impl = impl; _hostViewOfAddIn = hostViewOfAddIn; _contractHandle = contractHandle; } // Takes a host add-in view (HAV) and maps that to an add-in controller. public static AddInController GetAddInController(Object addIn) { return AddInControllerImpl.GetAddInController(addIn); } [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] public void Shutdown() { _impl.Shutdown(); } // This will not be usable for OOP scenarios. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="AppDomain")] public AppDomain AppDomain { get { return _impl.AppDomain; } } public AddInToken Token { get { return _impl.Token; } } public AddInEnvironment AddInEnvironment { get { return _impl.AddInEnvironment; } } internal AddInControllerImpl AddInControllerImpl { get { return _impl; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: AddInController ** ** Purpose: Allows you to shut down an add-in, which may unload ** an AppDomain or kill an out-of-process add-in. ** ===========================================================*/ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Reflection; using System.Runtime.ConstrainedExecution; using System.Runtime.Remoting; using System.Runtime.Remoting.Lifetime; using System.Runtime.Serialization; using System.Security.Permissions; using System.Security; using System.Diagnostics; using System.AddIn.Contract; using System.AddIn.Pipeline; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { // Wrapper on AddInControllerImpl so that a ref count is kept on the Contract // keeping the addin alive while an AddInController object is alive in the host. public sealed class AddInController { private AddInControllerImpl _impl; // keep the addin alive while the controller is alive [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification="Needed to prevent remoting failures")] private Object _hostViewOfAddIn; // Prevent the addin domain from being torn down while there is a controller still alive when, for example, // Dispose is called on the HVA and the hostAdapter releases its LifetimeToken. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification="Needed for finalizer behavior")] private ContractHandle _contractHandle; internal AddInController(AddInControllerImpl impl, Object hostViewOfAddIn, ContractHandle contractHandle) { System.Diagnostics.Contracts.Contract.Requires(impl != null); _impl = impl; _hostViewOfAddIn = hostViewOfAddIn; _contractHandle = contractHandle; } // Takes a host add-in view (HAV) and maps that to an add-in controller. public static AddInController GetAddInController(Object addIn) { return AddInControllerImpl.GetAddInController(addIn); } [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] public void Shutdown() { _impl.Shutdown(); } // This will not be usable for OOP scenarios. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="AppDomain")] public AppDomain AppDomain { get { return _impl.AppDomain; } } public AddInToken Token { get { return _impl.Token; } } public AddInEnvironment AddInEnvironment { get { return _impl.AddInEnvironment; } } internal AddInControllerImpl AddInControllerImpl { get { return _impl; } } } } // 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
- MemberAssignment.cs
- DataBindingCollection.cs
- UrlPath.cs
- SliderAutomationPeer.cs
- _emptywebproxy.cs
- PackageRelationshipCollection.cs
- EditorPartDesigner.cs
- AnnotationStore.cs
- PersonalizationProviderCollection.cs
- sqlcontext.cs
- RectangleGeometry.cs
- BitConverter.cs
- JournalEntryStack.cs
- TypeFieldSchema.cs
- DrawingImage.cs
- XmlCountingReader.cs
- PerformanceCounterManager.cs
- ReflectionHelper.cs
- SQLRoleProvider.cs
- DeferrableContent.cs
- CodeArgumentReferenceExpression.cs
- ZipPackagePart.cs
- PixelFormats.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- DBCommand.cs
- AQNBuilder.cs
- HeaderedContentControl.cs
- ProcessHostConfigUtils.cs
- _SslState.cs
- WindowsSlider.cs
- GridViewSelectEventArgs.cs
- SAPIEngineTypes.cs
- SearchForVirtualItemEventArgs.cs
- RowUpdatingEventArgs.cs
- ChangeInterceptorAttribute.cs
- ModuleBuilder.cs
- SoapDocumentMethodAttribute.cs
- XmlnsCompatibleWithAttribute.cs
- SessionStateUtil.cs
- AbstractSvcMapFileLoader.cs
- TrackBar.cs
- AssemblyUtil.cs
- StructuredTypeEmitter.cs
- QueueProcessor.cs
- NativeRightsManagementAPIsStructures.cs
- SecUtil.cs
- DesignTimeType.cs
- GradientBrush.cs
- HttpModuleCollection.cs
- SeekStoryboard.cs
- FlowDocument.cs
- XmlMemberMapping.cs
- AssemblyCache.cs
- InfiniteIntConverter.cs
- DataKeyArray.cs
- PerfCounters.cs
- EntityClassGenerator.cs
- PathParser.cs
- Geometry3D.cs
- LinearGradientBrush.cs
- ColumnHeaderConverter.cs
- OleDbException.cs
- BooleanStorage.cs
- AnnotationResourceChangedEventArgs.cs
- DetailsView.cs
- TransactionBridge.cs
- EventSchemaTraceListener.cs
- WeakHashtable.cs
- ISFTagAndGuidCache.cs
- SchemaTableOptionalColumn.cs
- TcpChannelListener.cs
- Int16Storage.cs
- DoubleUtil.cs
- RulePatternOps.cs
- ArrayList.cs
- XmlDocumentFragment.cs
- ConfigXmlSignificantWhitespace.cs
- SafeBitVector32.cs
- XmlSecureResolver.cs
- FloaterParaClient.cs
- SortableBindingList.cs
- EntityDataSourceContainerNameConverter.cs
- SqlError.cs
- sqlmetadatafactory.cs
- ScopedKnownTypes.cs
- XmlSchemaSimpleTypeList.cs
- GroupQuery.cs
- Codec.cs
- EditorZone.cs
- RegionIterator.cs
- ConnectionManagementElement.cs
- MemberAccessException.cs
- XmlFormatWriterGenerator.cs
- PropertyGridView.cs
- CompilerState.cs
- AxisAngleRotation3D.cs
- HasCopySemanticsAttribute.cs
- HelloOperationAsyncResult.cs
- OracleMonthSpan.cs
- TreeViewHitTestInfo.cs