Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Ejemplo de código
El servicio de componentes en cola de COM+ proporciona una manera de llamar a una clase de componente de manera asincrónica mediante Microsoft Message Queuing. Para obtener más información acerca de los componentes en cola derivados de la clase System.EnterpriseServices.ServicedComponent, vea Componentes en cola.
Para implementar un componente en cola que muestre un mensaje de manera asincrónica
Importe el espacio de nombres System.EnterpriseServices.
Imports System.EnterpriseServicesusing System.EnterpriseServices;Establezca el atributo ApplicationActivation ActivationOption.Server; habilite las colas de aplicación y el agente de escucha de colas estableciendo el atributo de ensamblado ApplicationQueuing, como se muestra en el siguiente código de ejemplo:
<assembly: ApplicationActivation(ActivationOption.Server)> <assembly: ApplicationQueuing(Enabled := True, _ QueueListenerEnabled := True)>[assembly: ApplicationActivation(ActivationOption.Server)] [assembly: ApplicationQueuing(Enabled=true, QueueListenerEnabled=true)]Defina una interfaz en cola y aplique el atributo InterfaceQueuing a la interfaz. Por ejemplo, en el siguiente código se muestra que el atributo InterfaceQueuing se aplica a la interfaz
IQComponentque tiene un único métodoDisplayMessage.<InterfaceQueuing> Public Interface IQComponent Sub DisplayMessage(msg As String) End Interface[InterfaceQueuing] public interface IQComponent { void DisplayMessage(string msg); }Defina una clase que se derive de la clase System.EnterpriseServices.ServicedComponent e implemente la interfaz en cola. Por ejemplo, en el siguiente código de ejemplo se declara una clase denominada
QComponentque se deriva de la clase System.EnterpriseServices.ServicedComponent e implementa la interfazIQComponent.Public Class QComponent Inherits ServicedComponent Implements IQComponent Public Sub DisplayMessage(msg As String) implements _ IQComponent.DisplayMessage MessageBox.Show(msg, "Processing message") End Sub End Classpublic class QComponent : ServicedComponent, IQComponent { public void DisplayMessage(string msg) { MessageBox.Show(msg, "Processing message"); } }Cree una aplicación cliente y pruebe el componente en cola.
Cree una variable cuyo tipo de datos sea la interfaz en cola de la que se deriva la clase de componente en cola.
Dim iQc As IQComponent = NothingIQComponent iQc = null;Enlace con el moniker correspondiente a la interfaz en cola y llame al método del componente en cola para mostrar el mensaje de forma asincrónica. Por ejemplo, en el siguiente código se enlaza con el componente en cola que corresponde a la interfaz
IQComponenty se llama al métodoDisplayMessagepara mostrar un mensaje de forma asincrónica.Try iQc = CType(Marshal.BindToMoniker("queue:/new:QCDemo.QComponent"), _ IQComponent) Catch l as Exception Console.Writeline("Caught Exception: " & l.Message) End Try iQc.DisplayMessage(messageToSend.Text) Marshal.ReleaseComObject(iQc)IQComponent iQc = null; try { iQc = (IQComponent) Marshal.BindToMoniker("queue:/new:QCDemo.QComponent"); } catch { MessageBox.Show("Cannot create Queued Component"); } iQc.DisplayMessage (messageToSend.Text); Marshal.ReleaseComObject(iQc);
Ejemplo
Imports System.Reflection
Imports System.EnterpriseServices
Imports System
<assembly: ApplicationName("QCDemoSvr")>
<assembly: ApplicationActivation(ActivationOption.Server)>
<assembly: ApplicationQueuing(Enabled := True, _
QueueListenerEnabled := True)>
<assembly: AssemblyKeyFile("QCDemoSvr.snk")>
Namespace QCDemo
<InterfaceQueuing>
Public Interface IQComponent
Sub DisplayMessage(msg As String)
End Interface
Public Class QComponent
Inherits ServicedComponent Implements IQComponent
Public Sub DisplayMessage(msg As String) implements _
IQComponent.DisplayMessage
MessageBox.Show(msg, "Processing message")
End Sub
End Class
End Namespace
using System.Reflection;
using System.EnterpriseServices;
[assembly: ApplicationName("QCDemoSvr")]
[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: ApplicationQueuing(Enabled=true, QueueListenerEnabled=true)]
[assembly: AssemblyKeyFile("QCDemoSvr.snk")]
namespace QCDemo
{
[InterfaceQueuing]
public interface IQComponent
{
void DisplayMessage(string msg);
}
public class QComponent : ServicedComponent, IQComponent
{
public void DisplayMessage(string msg)
{
MessageBox.Show(msg, "Processing message");
}
}
}
Consulte también
Referencia
System.EnterpriseServices Namespace
Conceptos
Resumen de los servicios COM+ disponibles
Componentes en cola
.gif)
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.