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
- LicenseException.cs
- XmlToDatasetMap.cs
- ClipboardData.cs
- WindowsUpDown.cs
- ReceiveContent.cs
- FactoryMaker.cs
- HttpHandlersSection.cs
- ContentIterators.cs
- _DigestClient.cs
- WebCategoryAttribute.cs
- JsonFormatMapping.cs
- DecoratedNameAttribute.cs
- PrivilegedConfigurationManager.cs
- SrgsRule.cs
- SamlAdvice.cs
- DateTimeFormatInfoScanner.cs
- ColorConverter.cs
- ConnectionPoolManager.cs
- ThreadTrace.cs
- KoreanLunisolarCalendar.cs
- CheckableControlBaseAdapter.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- DataGridViewDataErrorEventArgs.cs
- RouteParser.cs
- WindowsListViewItem.cs
- WebPartTransformer.cs
- NativeMethods.cs
- Gdiplus.cs
- HttpCacheVary.cs
- ComplexTypeEmitter.cs
- TextFormattingConverter.cs
- OpCellTreeNode.cs
- panel.cs
- Trace.cs
- PointAnimationUsingKeyFrames.cs
- HtmlInputButton.cs
- RemotingClientProxy.cs
- BaseConfigurationRecord.cs
- HttpCacheVaryByContentEncodings.cs
- PropertyGridView.cs
- TableAutomationPeer.cs
- LocalsItemDescription.cs
- TagMapInfo.cs
- XmlSchemaException.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- ProviderConnectionPoint.cs
- RegexParser.cs
- StackBuilderSink.cs
- ResizeGrip.cs
- ManualResetEvent.cs
- Dictionary.cs
- TextOnlyOutput.cs
- WebPartsPersonalizationAuthorization.cs
- PolicyDesigner.cs
- CodeTypeReferenceCollection.cs
- ListViewItemSelectionChangedEvent.cs
- AvTrace.cs
- RegistryConfigurationProvider.cs
- BindingRestrictions.cs
- Substitution.cs
- GridSplitterAutomationPeer.cs
- counter.cs
- ZipIOBlockManager.cs
- ChangePassword.cs
- UnsafeNetInfoNativeMethods.cs
- TimeSpan.cs
- ListViewItem.cs
- AppDomainResourcePerfCounters.cs
- PersonalizableTypeEntry.cs
- QilGenerator.cs
- ColumnCollection.cs
- ServiceDescriptions.cs
- ProfileSection.cs
- DataGridViewAutoSizeModeEventArgs.cs
- BufferedStream.cs
- GregorianCalendarHelper.cs
- HtmlGenericControl.cs
- FormView.cs
- MethodExpression.cs
- PrimitiveDataContract.cs
- PropertyChangingEventArgs.cs
- BoundColumn.cs
- CollectionViewProxy.cs
- XomlCompilerResults.cs
- InfiniteTimeSpanConverter.cs
- TypefaceCollection.cs
- ImageAutomationPeer.cs
- SapiAttributeParser.cs
- SymDocumentType.cs
- ClassicBorderDecorator.cs
- ErrorInfoXmlDocument.cs
- Enlistment.cs
- WebCategoryAttribute.cs
- IconBitmapDecoder.cs
- PrincipalPermission.cs
- TypedServiceOperationListItem.cs
- DiagnosticTraceSource.cs
- SaveFileDialog.cs
- FloatAverageAggregationOperator.cs
- ByteStack.cs