ObjectPoolingAttribute-Klasse
Aktiviert und konfiguriert Objektpooling für eine Komponente. Diese Klasse kann nicht vererbt werden.
Namespace: System.EnterpriseServices
Assembly: System.EnterpriseServices (in system.enterpriseservices.dll)
Syntax
'Declaration
<ComVisibleAttribute(False)> _
<AttributeUsageAttribute(AttributeTargets.Class, Inherited:=True)> _
Public NotInheritable Class ObjectPoolingAttribute
Inherits Attribute
'Usage
Dim instance As ObjectPoolingAttribute
[ComVisibleAttribute(false)]
[AttributeUsageAttribute(AttributeTargets.Class, Inherited=true)]
public sealed class ObjectPoolingAttribute : Attribute
[ComVisibleAttribute(false)]
[AttributeUsageAttribute(AttributeTargets::Class, Inherited=true)]
public ref class ObjectPoolingAttribute sealed : public Attribute
/** @attribute ComVisibleAttribute(false) */
/** @attribute AttributeUsageAttribute(AttributeTargets.Class, Inherited=true) */
public final class ObjectPoolingAttribute extends Attribute
ComVisibleAttribute(false)
AttributeUsageAttribute(AttributeTargets.Class, Inherited=true)
public final class ObjectPoolingAttribute extends Attribute
Hinweise
Wenn Objektpooling angegeben ist, darf es im COM+-Katalog nicht deaktiviert sein, und wenn es im COM+-Katalog aktiviert ist, muss es für die Komponente angegeben sein.
Eine Liste der anfänglichen Eigenschaftenwerte für eine Instanz von ObjectPoolingAttribute finden Sie unter ObjectPoolingAttribute-Konstruktor.
Weitere Informationen über das Verwenden von Attributen finden Sie unter Erweitern von Metadaten mithilfe von Attributen.
Beispiel
Im folgenden Codebeispiel wird die Verwendung dieses Attributs veranschaulicht.
Imports System
Imports System.EnterpriseServices
Imports System.Windows.Forms
<Assembly: ApplicationName("ObjectInspector")>
<Assembly: ApplicationActivation(ActivationOption.Server)>
<Assembly: System.Reflection.AssemblyKeyFile("Inspector.snk")>
<JustInTimeActivation(), ObjectPooling(MinPoolSize := 2, MaxPoolSize := 100, CreationTimeout := 1000)> _
Public Class ObjectInspector
Inherits ServicedComponent
Public Function IdentifyObject(ByVal obj As [Object]) As String
' Return this object to the pool after use.
ContextUtil.DeactivateOnReturn = True
' Get the supplied object's type.
Dim objType As Type = obj.GetType()
' Return its name.
Return objType.FullName
End Function 'IdentifyObject
Protected Overrides Sub Activate()
MessageBox.Show(String.Format("Now entering..." + vbLf + "Application: {0}" + vbLf + "Instance: {1}" + vbLf + "Context: {2}" + vbLf, ContextUtil.ApplicationId.ToString(), ContextUtil.ApplicationInstanceId.ToString(), ContextUtil.ContextId.ToString()))
End Sub 'Activate
Protected Overrides Sub Deactivate()
MessageBox.Show("Bye Bye!")
End Sub 'Deactivate
' This object can be pooled.
Protected Overrides Function CanBePooled() As Boolean
Return True
End Function 'CanBePooled
End Class 'ObjectInspector
using System;
using System.EnterpriseServices;
using System.Windows.Forms;
[assembly: ApplicationName("ObjectInspector")]
[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: System.Reflection.AssemblyKeyFile("Inspector.snk")]
[JustInTimeActivation]
[ObjectPooling(MinPoolSize=2, MaxPoolSize=100, CreationTimeout=1000)]
public class ObjectInspector : ServicedComponent
{
public string IdentifyObject (Object obj)
{
// Return this object to the pool after use.
ContextUtil.DeactivateOnReturn = true;
// Get the supplied object's type.
Type objType = obj.GetType();
// Return its name.
return(objType.FullName);
}
protected override void Activate()
{
MessageBox.Show( String.Format("Now entering...\nApplication: {0}\nInstance: {1}\nContext: {2}\n",
ContextUtil.ApplicationId.ToString(), ContextUtil.ApplicationInstanceId.ToString(),
ContextUtil.ContextId.ToString() ) );
}
protected override void Deactivate()
{
MessageBox.Show("Bye Bye!");
}
// This object can be pooled.
protected override bool CanBePooled()
{
return(true);
}
}
#using <System.Windows.Forms.dll>
#using <System.Transactions.dll>
#using <System.EnterpriseServices.dll>
using namespace System;
using namespace System::EnterpriseServices;
using namespace System::Windows::Forms;
[assembly:ApplicationName("ObjectInspector")];
[assembly:ApplicationActivation(ActivationOption::Server)];
[assembly:System::Reflection::AssemblyKeyFile("Inspector.snk")];
[JustInTimeActivation]
[ObjectPooling(MinPoolSize=2,MaxPoolSize=100,CreationTimeout=1000)]
public ref class ObjectInspector: public ServicedComponent
{
public:
String^ IdentifyObject( Object^ obj )
{
// Return this object to the pool after use.
ContextUtil::DeactivateOnReturn = true;
// Get the supplied object's type.
Type^ objType = obj->GetType();
// Return its name.
return (objType->FullName);
}
protected:
virtual void Activate() override
{
MessageBox::Show( String::Format( "Now entering...\nApplication: {0}\nInstance: {1}\nContext: {2}\n", ContextUtil::ApplicationId.ToString(), ContextUtil::ApplicationInstanceId.ToString(), ContextUtil::ContextId.ToString() ) );
}
virtual void Deactivate() override
{
MessageBox::Show( "Bye Bye!" );
}
// This object can be pooled.
virtual bool CanBePooled() override
{
return (true);
}
};
import System.*;
import System.EnterpriseServices.*;
import System.Windows.Forms.*;
/** @assembly ApplicationName("ObjectInspector")
*/
/** @assembly ApplicationActivation(ActivationOption.Server)
*/
/** @assembly System.Reflection.AssemblyKeyFile("Inspector.snk")
*/
/** @attribute JustInTimeActivation()
*/
/** @attribute ObjectPooling(MinPoolSize = 2, MaxPoolSize = 100,
CreationTimeout = 1000)
*/
public class ObjectInspector extends ServicedComponent
{
public String IdentifyObject(Object obj)
{
// Return this object to the pool after use.
ContextUtil.set_DeactivateOnReturn(true);
// Get the supplied object's type.
Type objType = obj.GetType();
// Return its name.
return objType.get_FullName();
} //IdentifyObject
protected void Activate()
{
MessageBox.Show(String.Format("Now entering...\nApplication: {0}\n"
+ "Instance: {1}\nContext: {2}\n",
ContextUtil.get_ApplicationId().ToString(),
ContextUtil.get_ApplicationInstanceId().ToString(),
ContextUtil.get_ContextId().ToString()));
} //Activate
protected void Deactivate()
{
MessageBox.Show("Bye Bye!");
} //Deactivate
// This object can be pooled.
protected boolean CanBePooled()
{
return true;
} //CanBePooled
} //ObjectInspector
Vererbungshierarchie
System.Object
System.Attribute
System.EnterpriseServices.ObjectPoolingAttribute
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
ObjectPoolingAttribute-Member
System.EnterpriseServices-Namespace