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
- SingleObjectCollection.cs
- Pkcs7Recipient.cs
- Vector3DAnimationBase.cs
- QilStrConcatenator.cs
- SkinBuilder.cs
- LogWriteRestartAreaAsyncResult.cs
- CoTaskMemUnicodeSafeHandle.cs
- SimpleType.cs
- SymDocumentType.cs
- GroupBoxDesigner.cs
- ObfuscateAssemblyAttribute.cs
- ConfigsHelper.cs
- WebPartDisplayModeCollection.cs
- PrintDialog.cs
- TypeToArgumentTypeConverter.cs
- NamespaceInfo.cs
- CodePageUtils.cs
- OpenTypeLayoutCache.cs
- PropertyDescriptorCollection.cs
- HttpCacheParams.cs
- AdditionalEntityFunctions.cs
- Graph.cs
- ObjectStorage.cs
- DocumentAutomationPeer.cs
- EncoderBestFitFallback.cs
- StringAnimationBase.cs
- ServiceRouteHandler.cs
- StaticResourceExtension.cs
- RowBinding.cs
- Membership.cs
- NativeRecognizer.cs
- ExtensionDataReader.cs
- SystemFonts.cs
- PersonalizationState.cs
- Property.cs
- Style.cs
- ScriptResourceHandler.cs
- IteratorFilter.cs
- GeneratedContractType.cs
- FixedSOMLineCollection.cs
- PagesSection.cs
- UiaCoreProviderApi.cs
- ReadOnlyAttribute.cs
- PerformanceCounterManager.cs
- DesignerLoader.cs
- TimeSpan.cs
- DispatcherHooks.cs
- WinFormsSpinner.cs
- ToolbarAUtomationPeer.cs
- glyphs.cs
- ListItemConverter.cs
- Camera.cs
- EndpointDiscoveryMetadata.cs
- ListViewItem.cs
- VariableExpressionConverter.cs
- ToolStripControlHost.cs
- OleServicesContext.cs
- OutputCacheSection.cs
- XmlNamespaceMapping.cs
- PropertyGridCommands.cs
- ValidatedControlConverter.cs
- oledbmetadatacolumnnames.cs
- DataGridTextBox.cs
- SecureConversationServiceCredential.cs
- PointValueSerializer.cs
- ParameterInfo.cs
- CanExecuteRoutedEventArgs.cs
- CollectionCodeDomSerializer.cs
- CutCopyPasteHelper.cs
- SamlAttributeStatement.cs
- OrthographicCamera.cs
- EndpointNotFoundException.cs
- IntSecurity.cs
- SendContent.cs
- DataGridTable.cs
- MaterialGroup.cs
- HostElement.cs
- DetailsViewRow.cs
- LinearGradientBrush.cs
- MetafileHeader.cs
- AddInController.cs
- RecordsAffectedEventArgs.cs
- StandardToolWindows.cs
- DateTimePickerDesigner.cs
- IntegerFacetDescriptionElement.cs
- ProfilePropertySettings.cs
- ConfigurationManagerInternalFactory.cs
- COAUTHIDENTITY.cs
- CheckedListBox.cs
- nulltextcontainer.cs
- MetadataCache.cs
- ControlParameter.cs
- HMACSHA256.cs
- LinqDataSourceUpdateEventArgs.cs
- BamlBinaryReader.cs
- EdmScalarPropertyAttribute.cs
- ObfuscationAttribute.cs
- EventHandlingScope.cs
- ColorTransform.cs
- InputGestureCollection.cs