ServicedComponent Класс

Определение

Представляет базовый класс всех классов с помощью служб COM+.

public ref class ServicedComponent abstract : ContextBoundObject, IDisposable, System::EnterpriseServices::IRemoteDispatch, System::EnterpriseServices::IServicedComponentInfo
[System.Serializable]
public abstract class ServicedComponent : ContextBoundObject, IDisposable, System.EnterpriseServices.IRemoteDispatch, System.EnterpriseServices.IServicedComponentInfo
[<System.Serializable>]
type ServicedComponent = class
    inherit ContextBoundObject
    interface IRemoteDispatch
    interface IDisposable
    interface IServicedComponentInfo
Public MustInherit Class ServicedComponent
Inherits ContextBoundObject
Implements IDisposable, IRemoteDispatch, IServicedComponentInfo
Наследование
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода показано, как предоставить класс в качестве настроенного com-компонента.


[assembly:ApplicationName("Calculator")];
[assembly:ApplicationActivation(ActivationOption::Library)];
[assembly:System::Reflection::AssemblyKeyFile("Calculator.snk")];
public ref class Calculator: public ServicedComponent
{
public:
   int Add( int x, int y )
   {
      return (x + y);
   }

};
using System;
using System.EnterpriseServices;

[assembly: ApplicationName("Calculator")]
[assembly: ApplicationActivation(ActivationOption.Library)]
[assembly: System.Reflection.AssemblyKeyFile("Calculator.snk")]
public class Calculator : ServicedComponent
{
    public int Add (int x, int y)
    {
        return(x+y);
    }
}

Чтобы развернуть этот класс в качестве настроенного COM-компонента, необходимо создать надежный ключ, скомпилировать класс как библиотеку и зарегистрировать библиотеку. Эти три шага выполняются следующими тремя командами.

sn -k Calculator.snk
csc /t:library Calculator.cs
regsvcs Calculator.dll

Комментарии

В определенных условиях класс, производный от ServicedComponent этого, работает в приложении COM+ может перестать отвечать. Эта проблема вызвана взаимоблокировкой действий. Действия могут взаимоблокировки для многопоточных приложений из-за асинхронной очистки ссылок на компоненты. Чтобы обойти эту проблему, вызовите метод при завершении работы с объектами Dispose , производными от ServicedComponent.

Note

Клиентский код должен вызывать Dispose обслуживаемые компоненты, чтобы обеспечить правильную работу.

Конструкторы

Имя Описание
ServicedComponent()

Инициализирует новый экземпляр класса ServicedComponent.

Методы

Имя Описание
Activate()

Вызывается инфраструктурой при создании или выделении объекта из пула. Переопределите этот метод, чтобы добавить в объекты пользовательский код инициализации.

CanBePooled()

Этот метод вызывается инфраструктурой до возвращения объекта в пул. Переопределите этот метод, чтобы проголосовать за то, помещается ли объект обратно в пул.

Construct(String)

Вызывается инфраструктурой сразу после вызова конструктора, передавая строку конструктора. Переопределите этот метод, чтобы использовать строковое значение конструкции.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Deactivate()

Вызывается инфраструктурой, когда объект будет деактивирован. Переопределите этот метод, чтобы добавить пользовательский код завершения к объектам, когда используется скомпилированный код JIT или пул объектов.

Dispose()

Освобождает все ресурсы, используемые параметром ServicedComponent.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые ServicedComponent и при необходимости освобождает управляемые ресурсы.

DisposeObject(ServicedComponent)

Завершает объект и удаляет связанную ссылку COM+.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
IRemoteDispatch.RemoteDispatchAutoDone(String)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Гарантирует, что в контексте ServicedComponent COM+ бит объекта done класса устанавливается true после вызова удаленного метода.

IRemoteDispatch.RemoteDispatchNotAutoDone(String)

Не гарантирует, что в контексте ServicedComponent COM+ бит объекта done класса устанавливается true после вызова удаленного метода.

IServicedComponentInfo.GetComponentInfo(Int32, String[])

Получает определенные сведения об экземпляре ServicedComponent класса.

Применяется к