MessageQueue.Send Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sendet ein Objekt an eine Warteschlange.
Überlädt
| Name | Beschreibung |
|---|---|
| Send(Object) |
Sendet ein Objekt an eine nicht transaktionsbezogene Warteschlange, auf die von diesem MessageQueueverwiesen wird. |
| Send(Object, MessageQueueTransaction) |
Sendet ein Objekt an die Transaktionswarteschlange, auf die von diesem MessageQueueverwiesen wird. |
| Send(Object, MessageQueueTransactionType) |
Sendet ein Objekt an die Warteschlange, auf die von diesem MessageQueueverwiesen wird. |
| Send(Object, String) |
Sendet ein Objekt an die nicht transaktionsbezogene Warteschlange, auf die durch diese MessageQueue Warteschlange verwiesen wird, und gibt eine Bezeichnung für die Nachricht an. |
| Send(Object, String, MessageQueueTransaction) |
Sendet ein Objekt an die Transaktionswarteschlange, auf die durch diese MessageQueue Warteschlange verwiesen wird, und gibt eine Bezeichnung für die Nachricht an. |
| Send(Object, String, MessageQueueTransactionType) |
Sendet ein Objekt an die Warteschlange, auf die verwiesen MessageQueue wird, und gibt eine Bezeichnung für die Nachricht an. |
Send(Object)
Sendet ein Objekt an eine nicht transaktionsbezogene Warteschlange, auf die von diesem MessageQueueverwiesen wird.
public:
void Send(System::Object ^ obj);
public void Send(object obj);
member this.Send : obj -> unit
Public Sub Send (obj As Object)
Parameter
- obj
- Object
Das Objekt, das an die Warteschlange gesendet werden soll.
Ausnahmen
Die Path Eigenschaft wurde nicht festgelegt.
- oder -
Fehler beim Zugriff auf eine Message Queuing-Methode.
Beispiele
Im folgenden Codebeispiel wird eine Verbindung mit einer Nachrichtenwarteschlange hergestellt und eine Nachricht an die Warteschlange gesendet.
#using <system.dll>
#using <system.messaging.dll.>
using namespace System;
using namespace System::Messaging;
ref class MyNewQueue
{
public:
void SendMessage()
{
// Connect to a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
// Send a message to the queue.
if ( myQueue->Transactional )
{
// Create a transaction.
MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;
// Begin the transaction.
myTransaction->Begin();
// Send the message.
myQueue->Send( "My Message Data.", myTransaction );
// Commit the transaction.
myTransaction->Commit();
}
else
{
myQueue->Send( "My Message Data." );
}
return;
}
};
int main()
{
// Create a new instance of the class.
MyNewQueue^ myNewQueue = gcnew MyNewQueue;
// Send a message to a queue.
myNewQueue->SendMessage();
return 0;
}
using System;
using System.Messaging;
namespace MyProject
{
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
//**************************************************
// Provides an entry point into the application.
//
// This example sends a message to a queue.
//**************************************************
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Send a message to a queue.
myNewQueue.SendMessage();
return;
}
//**************************************************
// Sends a message to a queue.
//**************************************************
public void SendMessage()
{
// Connect to a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Send a message to the queue.
if (myQueue.Transactional)
{
// Create a transaction.
MessageQueueTransaction myTransaction = new
MessageQueueTransaction();
// Begin the transaction.
myTransaction.Begin();
// Send the message.
myQueue.Send("My Message Data.", myTransaction);
// Commit the transaction.
myTransaction.Commit();
}
else
{
myQueue.Send("My Message Data.");
}
return;
}
}
}
Imports System.Messaging
Public Class MyNewQueue
'
' Provides an entry point into the application.
'
' This example sends a message to a queue.
'
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue
' Send a message to a queue.
myNewQueue.SendMessage()
Return
End Sub
'
' Sends a message to a queue.
'
Public Sub SendMessage()
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Send a message to the queue.
If myQueue.Transactional = True Then
' Create a transaction.
Dim myTransaction As New MessageQueueTransaction
' Begin the transaction.
myTransaction.Begin()
' Send the message.
myQueue.Send("My Message Data.", myTransaction)
' Commit the transaction.
myTransaction.Commit()
Else
myQueue.Send("My Message Data.")
End If
Return
End Sub
End Class
Das folgende Codebeispiel sendet eine anwendungsdefinierte Order Klasse an eine Warteschlange und empfängt dann eine Nachricht aus dieser Warteschlange.
Hinweise
Verwenden Sie diese Überladung, um eine Nachricht zu senden, die den obj Parameter an die Warteschlange enthält, auf die von der MessageQueueWarteschlange verwiesen wird. Das Objekt, das Sie an die Warteschlange senden, kann ein Message oder ein beliebiges verwaltetes Objekt sein. Wenn Sie ein anderes Objekt als ein MessageObjekt senden, wird das Objekt serialisiert und in den Textkörper der Nachricht eingefügt.
Wenn Sie diese Überladung verwenden, um eine Nachricht an eine Transaktionswarteschlange zu senden, wird die Nachricht an die Inschriftwarteschlange gesendet. Wenn die Nachricht Teil einer Transaktion sein soll, die andere Nachrichten enthält, verwenden Sie eine Überladung, die einen MessageQueueTransaction oder MessageQueueTransactionType als Parameter verwendet.
Wenn Sie die Formatter Eigenschaft vor dem Aufrufen Send(Object)nicht festlegen, wird der Formatierer standardmäßig auf die XmlMessageFormatter.
Die DefaultPropertiesToSend Eigenschaft gilt für ein anderes Objekt als ein Message. Wenn Sie z. B. eine Bezeichnung oder priorität mit dem DefaultPropertiesToSend Element angeben, gelten diese Werte für jede Nachricht, die ein Objekt enthält, das nicht vom Typ Message ist, wenn die Anwendung sie an die Warteschlange sendet. Beim Senden eines Werts Messagehaben die für die Message Rangfolge festgelegten Eigenschaftswerte Vorrang DefaultPropertiesToSend , und die Eigenschaft der Message.Formatter Nachricht hat Vorrang vor der Eigenschaft der Warteschlange MessageQueue.Formatter .
In der folgenden Tabelle wird gezeigt, ob diese Methode in verschiedenen Arbeitsgruppenmodi verfügbar ist.
| Arbeitsgruppenmodus | Verfügbar |
|---|---|
| Lokaler Computer | Ja |
| Name des lokalen Computers und des direkten Formats | Ja |
| Remotecomputer | No |
| Name des Remotecomputers und des direkten Formats | Ja |
Weitere Informationen
Gilt für:
Send(Object, MessageQueueTransaction)
Sendet ein Objekt an die Transaktionswarteschlange, auf die von diesem MessageQueueverwiesen wird.
public:
void Send(System::Object ^ obj, System::Messaging::MessageQueueTransaction ^ transaction);
public void Send(object obj, System.Messaging.MessageQueueTransaction transaction);
member this.Send : obj * System.Messaging.MessageQueueTransaction -> unit
Public Sub Send (obj As Object, transaction As MessageQueueTransaction)
Parameter
- obj
- Object
Das Objekt, das an die Warteschlange gesendet werden soll.
- transaction
- MessageQueueTransaction
Das MessageQueueTransaction-Objekt.
Ausnahmen
Der transaction Parameter ist null.
Die Path Eigenschaft wurde nicht festgelegt.
- oder -
Die Message Queuing-Anwendung hat eine falsche Transaktionsverwendung angegeben.
- oder -
Fehler beim Zugriff auf eine Message Queuing-Methode.
Beispiele
Das folgende Codebeispiel sendet eine Zeichenfolge an eine Transaktionswarteschlange und empfängt dann eine Nachricht aus dieser Warteschlange.
#using <system.dll>
#using <system.messaging.dll>
using namespace System;
using namespace System::Messaging;
/// <summary>
/// Provides a container class for the example.
/// </summary>
ref class MyNewQueue
{
public:
//*************************************************
// Sends a message to a queue.
//*************************************************
void SendMessageTransactional()
{
// Connect to a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myTransactionalQueue" );
// Send a message to the queue.
if ( myQueue->Transactional )
{
// Create a transaction.
MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;
// Begin the transaction.
myTransaction->Begin();
// Send the message.
myQueue->Send( "My Message Data.", myTransaction );
// Commit the transaction.
myTransaction->Commit();
}
return;
}
//*************************************************
// Receives a message containing an Order.
//*************************************************
void ReceiveMessageTransactional()
{
// Connect to a transactional queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myTransactionalQueue" );
// Set the formatter.
array<Type^>^p = gcnew array<Type^>(1);
p[ 0 ] = String::typeid;
myQueue->Formatter = gcnew XmlMessageFormatter( p );
// Create a transaction.
MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;
try
{
// Begin the transaction.
myTransaction->Begin();
// Receive the message.
Message^ myMessage = myQueue->Receive( myTransaction );
String^ myOrder = static_cast<String^>(myMessage->Body);
// Display message information.
Console::WriteLine( myOrder );
// Commit the transaction.
myTransaction->Commit();
}
catch ( MessageQueueException^ e )
{
// Handle nontransactional queues.
if ( e->MessageQueueErrorCode == MessageQueueErrorCode::TransactionUsage )
{
Console::WriteLine( "Queue is not transactional." );
}
// Else catch other sources of MessageQueueException.
// Roll back the transaction.
myTransaction->Abort();
}
// Catch other exceptions as necessary, such as
// InvalidOperationException, thrown when the formatter
// cannot deserialize the message.
return;
}
};
//*************************************************
// Provides an entry point into the application.
//
// This example sends and receives a message from
// a transactional queue.
//*************************************************
int main()
{
// Create a new instance of the class.
MyNewQueue^ myNewQueue = gcnew MyNewQueue;
// Send a message to a queue.
myNewQueue->SendMessageTransactional();
// Receive a message from a queue.
myNewQueue->ReceiveMessageTransactional();
return 0;
}
using System;
using System.Messaging;
namespace MyProject
{
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
//**************************************************
// Provides an entry point into the application.
//
// This example sends and receives a message from
// a transactional queue.
//**************************************************
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Send a message to a queue.
myNewQueue.SendMessageTransactional();
// Receive a message from a queue.
myNewQueue.ReceiveMessageTransactional();
return;
}
//**************************************************
// Sends a message to a queue.
//**************************************************
public void SendMessageTransactional()
{
// Connect to a queue on the local computer.
MessageQueue myQueue = new
MessageQueue(".\\myTransactionalQueue");
// Send a message to the queue.
if (myQueue.Transactional)
{
// Create a transaction.
MessageQueueTransaction myTransaction = new
MessageQueueTransaction();
// Begin the transaction.
myTransaction.Begin();
// Send the message.
myQueue.Send("My Message Data.", myTransaction);
// Commit the transaction.
myTransaction.Commit();
}
return;
}
//**************************************************
// Receives a message containing an Order.
//**************************************************
public void ReceiveMessageTransactional()
{
// Connect to a transactional queue on the local computer.
MessageQueue myQueue = new
MessageQueue(".\\myTransactionalQueue");
// Set the formatter.
myQueue.Formatter = new XmlMessageFormatter(new Type[]
{typeof(String)});
// Create a transaction.
MessageQueueTransaction myTransaction = new
MessageQueueTransaction();
try
{
// Begin the transaction.
myTransaction.Begin();
// Receive the message.
Message myMessage = myQueue.Receive(myTransaction);
String myOrder = (String)myMessage.Body;
// Display message information.
Console.WriteLine(myOrder);
// Commit the transaction.
myTransaction.Commit();
}
catch (MessageQueueException e)
{
// Handle nontransactional queues.
if (e.MessageQueueErrorCode ==
MessageQueueErrorCode.TransactionUsage)
{
Console.WriteLine("Queue is not transactional.");
}
// Else catch other sources of MessageQueueException.
// Roll back the transaction.
myTransaction.Abort();
}
// Catch other exceptions as necessary, such as
// InvalidOperationException, thrown when the formatter
// cannot deserialize the message.
return;
}
}
}
Imports System.Messaging
Public Class MyNewQueue
'
' Provides an entry point into the application.
'
' This example sends and receives a message from
' a transactional queue.
'
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue
' Send a message to a queue.
myNewQueue.SendMessageTransactional()
' Receive a message from a queue.
myNewQueue.ReceiveMessageTransactional()
Return
End Sub
'
' Sends a message to a queue.
'
Public Sub SendMessageTransactional()
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myTransactionalQueue")
' Send a message to the queue.
If myQueue.Transactional = True Then
' Create a transaction.
Dim myTransaction As New MessageQueueTransaction
' Begin the transaction.
myTransaction.Begin()
' Send the message.
myQueue.Send("My Message Data.", myTransaction)
' Commit the transaction.
myTransaction.Commit()
End If
Return
End Sub
'
' Receives a message containing an Order.
'
Public Sub ReceiveMessageTransactional()
' Connect to a transactional queue on the local computer.
Dim myQueue As New MessageQueue(".\myTransactionalQueue")
' Set the formatter.
myQueue.Formatter = New XmlMessageFormatter(New Type() _
{GetType([String])})
' Create a transaction.
Dim myTransaction As New MessageQueueTransaction
Try
' Begin the transaction.
myTransaction.Begin()
' Receive the message.
Dim myMessage As Message = _
myQueue.Receive(myTransaction)
Dim myOrder As [String] = CType(myMessage.Body, _
[String])
' Display message information.
Console.WriteLine(myOrder)
' Commit the transaction.
myTransaction.Commit()
Catch e As MessageQueueException
' Handle nontransactional queues.
If e.MessageQueueErrorCode = _
MessageQueueErrorCode.TransactionUsage Then
Console.WriteLine("Queue is not transactional.")
End If
' Else catch other sources of a MessageQueueException.
' Roll back the transaction.
myTransaction.Abort()
' Catch other exceptions as necessary, such as
' InvalidOperationException, thrown when the formatter
' cannot deserialize the message.
End Try
Return
End Sub
End Class
Hinweise
Verwenden Sie diese Überladung, um eine Nachricht zu senden, die den obj Parameter an die transaktionsbezogene Warteschlange enthält, auf die MessageQueueverwiesen wird, mithilfe eines internen Transaktionskontexts, der durch den transaction Parameter definiert wird. Das Objekt, das Sie an die Warteschlange senden, kann ein Message oder ein beliebiges verwaltetes Objekt sein. Wenn Sie ein anderes Objekt als ein MessageObjekt senden, wird das Objekt serialisiert und in den Textkörper der Nachricht eingefügt.
Wenn Sie diese Überladung verwenden, um eine Nachricht an eine nicht transaktionsbezogene Warteschlange zu senden, wird die Nachricht möglicherweise ohne Ausnahme an die Warteschlange mit inaktiven Buchstaben gesendet.
Wenn Sie die Formatter Eigenschaft vor dem Aufrufen Send(Object)nicht festlegen, wird der Formatierer standardmäßig auf die XmlMessageFormatter.
Die DefaultPropertiesToSend Eigenschaft gilt für ein anderes Objekt als ein Message. Wenn Sie z. B. eine Bezeichnung oder priorität mit dem DefaultPropertiesToSend Element angeben, gelten diese Werte für jede Nachricht, die ein Objekt enthält, das nicht vom Typ Message ist, wenn die Anwendung sie an die Warteschlange sendet. Beim Senden eines Werts Messagehaben die für die Message Rangfolge festgelegten Eigenschaftswerte Vorrang DefaultPropertiesToSend , und die Eigenschaft der Message.Formatter Nachricht hat Vorrang vor der Eigenschaft der Warteschlange MessageQueue.Formatter .
MessageQueueTransaction ist threading apartment aware, also if your apartment state is STA, you cannot use the transaction in multiple threads. Visual Basic legt den Status des Hauptthreads auf STAfest, sodass Sie die MTAThreadAttribute In-Unterroutine Main anwenden müssen. Andernfalls löst das Senden einer Transaktionsnachricht mit einem anderen Thread eine MessageQueueException Ausnahme aus. Sie wenden das MTAThreadAttribute folgende Fragment an.
<System.MTAThreadAttribute>
public sub Main()
In der folgenden Tabelle wird gezeigt, ob diese Methode in verschiedenen Arbeitsgruppenmodi verfügbar ist.
| Arbeitsgruppenmodus | Verfügbar |
|---|---|
| Lokaler Computer | Ja |
| Name des lokalen Computers und des direkten Formats | Ja |
| Remotecomputer | No |
| Name des Remotecomputers und des direkten Formats | Ja |
Weitere Informationen
- DefaultPropertiesToSend
- Message
- MessageQueueTransaction
- Transactional
- Peek()
- Receive()
- BeginPeek()
- BeginReceive()
Gilt für:
Send(Object, MessageQueueTransactionType)
Sendet ein Objekt an die Warteschlange, auf die von diesem MessageQueueverwiesen wird.
public:
void Send(System::Object ^ obj, System::Messaging::MessageQueueTransactionType transactionType);
public void Send(object obj, System.Messaging.MessageQueueTransactionType transactionType);
member this.Send : obj * System.Messaging.MessageQueueTransactionType -> unit
Public Sub Send (obj As Object, transactionType As MessageQueueTransactionType)
Parameter
- obj
- Object
Das Objekt, das an die Warteschlange gesendet werden soll.
- transactionType
- MessageQueueTransactionType
Einer der MessageQueueTransactionType Werte, der den Typ des Transaktionskontexts beschreibt, der der Nachricht zugeordnet werden soll.
Ausnahmen
Der transactionType Parameter ist keins der MessageQueueTransactionType Member.
Die Path Eigenschaft wurde nicht festgelegt.
- oder -
Fehler beim Zugriff auf eine Message Queuing-Methode.
Beispiele
Das folgende Codebeispiel veranschaulicht die Verwendung von Send(Object, MessageQueueTransactionType).
// Connect to a transactional queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleTransQueue");
// Create a new message.
Message^ msg = gcnew Message("Example Message Body");
// Send the message.
queue->Send(msg, MessageQueueTransactionType::Single);
queue->Close();
// Connect to a transactional queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleTransQueue");
// Create a new message.
Message msg = new Message("Example Message Body");
// Send the message.
queue.Send(msg, MessageQueueTransactionType.Single);
Hinweise
Verwenden Sie diese Überladung, um eine Nachricht zu senden, die den obj Parameter enthält, auf die durch den MessageQueueParameter verwiesen wird, mithilfe eines durch den transactionType Parameter definierten Transaktionskontexts. Geben Sie Automatic für den transactionType Parameter an, wenn bereits ein externer Transaktionskontext mit dem Thread verknüpft ist, den Sie zum Senden der Nachricht verwenden möchten. Geben Sie an Single , ob Sie die Nachricht als einzelne interne Transaktion senden möchten. Sie können angeben None , ob Sie eine Transaktionsnachricht an einen nicht transaktionsbezogenen Thread senden möchten.
Das Objekt, das Sie an die Warteschlange senden, kann ein Message oder ein beliebiges verwaltetes Objekt sein. Wenn Sie ein anderes Objekt als ein MessageObjekt senden, wird das Objekt serialisiert und in den Textkörper der Nachricht eingefügt.
Wenn Sie die Formatter Eigenschaft vor dem Aufrufen Send(Object)nicht festlegen, wird der Formatierer standardmäßig auf die XmlMessageFormatter.
Die DefaultPropertiesToSend Eigenschaft gilt für ein anderes Objekt als ein Message. Wenn Sie z. B. eine Bezeichnung oder priorität mit dem DefaultPropertiesToSend Element angeben, gelten diese Werte für jede Nachricht, die ein Objekt enthält, das nicht vom Typ Message ist, wenn die Anwendung sie an die Warteschlange sendet. Beim Senden eines Werts Messagehaben die für die Message Rangfolge festgelegten Eigenschaftswerte Vorrang DefaultPropertiesToSend , und die Eigenschaft der Message.Formatter Nachricht hat Vorrang vor der Eigenschaft der Warteschlange MessageQueue.Formatter .
In der folgenden Tabelle wird gezeigt, ob diese Methode in verschiedenen Arbeitsgruppenmodi verfügbar ist.
| Arbeitsgruppenmodus | Verfügbar |
|---|---|
| Lokaler Computer | Ja |
| Name des lokalen Computers und des direkten Formats | Ja |
| Remotecomputer | No |
| Name des Remotecomputers und des direkten Formats | Ja |
Weitere Informationen
- MessageQueueTransactionType
- DefaultPropertiesToSend
- Message
- Transactional
- Peek()
- Receive()
- BeginPeek()
- BeginReceive()
Gilt für:
Send(Object, String)
Sendet ein Objekt an die nicht transaktionsbezogene Warteschlange, auf die durch diese MessageQueue Warteschlange verwiesen wird, und gibt eine Bezeichnung für die Nachricht an.
public:
void Send(System::Object ^ obj, System::String ^ label);
public void Send(object obj, string label);
member this.Send : obj * string -> unit
Public Sub Send (obj As Object, label As String)
Parameter
- obj
- Object
Das Objekt, das an die Warteschlange gesendet werden soll.
- label
- String
Die Bezeichnung der Nachricht.
Ausnahmen
Der label Parameter ist null.
Die Path Eigenschaft wurde nicht festgelegt.
- oder -
Fehler beim Zugriff auf eine Message Queuing-Methode.
Beispiele
Das folgende Codebeispiel veranschaulicht die Verwendung von Send(Object, String).
// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");
// Create a new message.
Message^ msg = gcnew Message("Example Message Body");
// Send the message.
queue->Send(msg, "Example Message Label");
queue->Close();
// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");
// Create a new message.
Message msg = new Message("Example Message Body");
// Send the message.
queue.Send(msg, "Example Message Label");
Hinweise
Verwenden Sie diese Überladung, um eine Nachricht zu senden, die den obj Parameter an die Warteschlange enthält, auf die von der MessageQueueWarteschlange verwiesen wird. Mit dieser Überladung können Sie die Zeichenfolgenbezeichnung angeben, die die Nachricht identifiziert. Das Objekt, das Sie an die Warteschlange senden, kann eine MessageStruktur, ein Datenobjekt oder ein beliebiges verwaltetes Objekt sein. Wenn Sie ein anderes Objekt als ein MessageObjekt senden, wird das Objekt serialisiert und in den Textkörper der Nachricht eingefügt.
Die Nachrichtenbeschriftung unterscheidet sich von der Nachrichtenwarteschlangenbezeichnung, beide sind jedoch anwendungsabhängig und haben keine Vererbung für Message Queuing.
Wenn Sie diese Überladung verwenden, um eine Nachricht an eine Transaktionswarteschlange zu senden, wird die Nachricht an die Inschriftwarteschlange gesendet. Wenn die Nachricht Teil einer Transaktion sein soll, die andere Nachrichten enthält, verwenden Sie eine Überladung, die einen MessageQueueTransaction oder MessageQueueTransactionType als Parameter verwendet.
Die Path Eigenschaft für diese MessageQueue Instanz muss angegeben werden, bevor Sie die Nachricht senden. Wenn Sie die Formatter Eigenschaft vor dem Aufrufen Send(Object)nicht festlegen, wird der Formatierer standardmäßig auf die XmlMessageFormatter.
Die DefaultPropertiesToSend Eigenschaft gilt für ein anderes Objekt als ein Message. Wenn Sie z. B. eine Bezeichnung oder priorität mit dem DefaultPropertiesToSend Element angeben, gelten diese Werte für jede Nachricht, die ein Objekt enthält, das nicht vom Typ Message ist, wenn die Anwendung sie an die Warteschlange sendet. Beim Senden eines Werts Messagehaben die für die Message Rangfolge festgelegten Eigenschaftswerte Vorrang DefaultPropertiesToSend , und die Eigenschaft der Message.Formatter Nachricht hat Vorrang vor der Eigenschaft der Warteschlange MessageQueue.Formatter .
In der folgenden Tabelle wird gezeigt, ob diese Methode in verschiedenen Arbeitsgruppenmodi verfügbar ist.
| Arbeitsgruppenmodus | Verfügbar |
|---|---|
| Lokaler Computer | Ja |
| Name des lokalen Computers und des direkten Formats | Ja |
| Remotecomputer | No |
| Name des Remotecomputers und des direkten Formats | Ja |
Weitere Informationen
Gilt für:
Send(Object, String, MessageQueueTransaction)
Sendet ein Objekt an die Transaktionswarteschlange, auf die durch diese MessageQueue Warteschlange verwiesen wird, und gibt eine Bezeichnung für die Nachricht an.
public:
void Send(System::Object ^ obj, System::String ^ label, System::Messaging::MessageQueueTransaction ^ transaction);
public void Send(object obj, string label, System.Messaging.MessageQueueTransaction transaction);
member this.Send : obj * string * System.Messaging.MessageQueueTransaction -> unit
Public Sub Send (obj As Object, label As String, transaction As MessageQueueTransaction)
Parameter
- obj
- Object
Das Objekt, das an die Warteschlange gesendet werden soll.
- label
- String
Die Bezeichnung der Nachricht.
- transaction
- MessageQueueTransaction
Das MessageQueueTransaction-Objekt.
Ausnahmen
Die Path Eigenschaft wurde nicht festgelegt.
- oder -
Die Message Queuing-Anwendung hat eine falsche Transaktionsverwendung angegeben.
- oder -
Fehler beim Zugriff auf eine Message Queuing-Methode.
Beispiele
Das folgende Codebeispiel veranschaulicht die Verwendung von Send(Object, String, MessageQueueTransaction).
// Connect to a transactional queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleTransQueue");
// Create a new message.
Message^ msg = gcnew Message("Example Message Body");
// Create a message queuing transaction.
MessageQueueTransaction^ transaction = gcnew MessageQueueTransaction();
try
{
// Begin a transaction.
transaction->Begin();
// Send the message to the queue.
queue->Send(msg, "Example Message Label", transaction);
// Commit the transaction.
transaction->Commit();
}
catch (Exception^ ex)
{
// Cancel the transaction.
transaction->Abort();
// Propagate the exception.
throw ex;
}
finally
{
// Dispose of the transaction object.
delete transaction;
queue->Close();
}
// Connect to a transactional queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleTransQueue");
// Create a new message.
Message msg = new Message("Example Message Body");
// Create a message queuing transaction.
MessageQueueTransaction transaction = new MessageQueueTransaction();
try
{
// Begin a transaction.
transaction.Begin();
// Send the message to the queue.
queue.Send(msg, "Example Message Label", transaction);
// Commit the transaction.
transaction.Commit();
}
catch (System.Exception e)
{
// Cancel the transaction.
transaction.Abort();
// Propagate the exception.
throw e;
}
finally
{
// Dispose of the transaction object.
transaction.Dispose();
}
Hinweise
Verwenden Sie diese Überladung, um eine Nachricht zu senden, die den obj Parameter an die transaktionsbezogene Warteschlange enthält, auf die MessageQueueverwiesen wird, mithilfe eines internen Transaktionskontexts, der durch den transaction Parameter definiert wird. Mit dieser Überladung können Sie die Zeichenfolgenbezeichnung angeben, die die Nachricht identifiziert. Das Objekt, das Sie an die Warteschlange senden, kann eine MessageStruktur, ein Datenobjekt oder ein beliebiges verwaltetes Objekt sein. Wenn Sie ein anderes Objekt als ein MessageObjekt senden, wird das Objekt serialisiert und in den Textkörper der Nachricht eingefügt.
Die Nachrichtenbeschriftung unterscheidet sich von der Nachrichtenwarteschlangenbezeichnung, beide sind jedoch anwendungsabhängig und haben keine Vererbung für Message Queuing.
Wenn Sie diese Überladung verwenden, um eine Nachricht an eine nicht transaktionsbezogene Warteschlange zu senden, wird die Nachricht möglicherweise ohne Ausnahme an die Warteschlange mit inaktiven Buchstaben gesendet.
Wenn Sie die Formatter Eigenschaft vor dem Aufrufen Send(Object)nicht festlegen, wird der Formatierer standardmäßig auf die XmlMessageFormatter.
Die DefaultPropertiesToSend Eigenschaft gilt für ein anderes Objekt als ein Message. Wenn Sie z. B. eine Bezeichnung oder priorität mit dem DefaultPropertiesToSend Element angeben, gelten diese Werte für jede Nachricht, die ein Objekt enthält, das nicht vom Typ Message ist, wenn die Anwendung sie an die Warteschlange sendet. Beim Senden eines Werts Messagehaben die für die Message Rangfolge festgelegten Eigenschaftswerte Vorrang DefaultPropertiesToSend , und die Eigenschaft der Message.Formatter Nachricht hat Vorrang vor der Eigenschaft der Warteschlange MessageQueue.Formatter .
MessageQueueTransaction ist threading apartment aware, also if your apartment state is STA, you cannot use the transaction in multiple threads. Visual Basic legt den Status des Hauptthreads auf STAfest, sodass Sie die MTAThreadAttribute In-Unterroutine Main anwenden müssen. Andernfalls löst das Senden einer Transaktionsnachricht mit einem anderen Thread eine MessageQueueException Ausnahme aus. Sie wenden das MTAThreadAttribute folgende Fragment an.
<System.MTAThreadAttribute>
public sub Main()
In der folgenden Tabelle wird gezeigt, ob diese Methode in verschiedenen Arbeitsgruppenmodi verfügbar ist.
| Arbeitsgruppenmodus | Verfügbar |
|---|---|
| Lokaler Computer | Ja |
| Name des lokalen Computers und des direkten Formats | Ja |
| Remotecomputer | No |
| Name des Remotecomputers und des direkten Formats | Ja |
Weitere Informationen
- DefaultPropertiesToSend
- Message
- MessageQueueTransaction
- Transactional
- Label
- Peek()
- Receive()
- BeginPeek()
- BeginReceive()
Gilt für:
Send(Object, String, MessageQueueTransactionType)
Sendet ein Objekt an die Warteschlange, auf die verwiesen MessageQueue wird, und gibt eine Bezeichnung für die Nachricht an.
public:
void Send(System::Object ^ obj, System::String ^ label, System::Messaging::MessageQueueTransactionType transactionType);
public void Send(object obj, string label, System.Messaging.MessageQueueTransactionType transactionType);
member this.Send : obj * string * System.Messaging.MessageQueueTransactionType -> unit
Public Sub Send (obj As Object, label As String, transactionType As MessageQueueTransactionType)
Parameter
- obj
- Object
Das Objekt, das an die Warteschlange gesendet werden soll.
- label
- String
Die Bezeichnung der Nachricht.
- transactionType
- MessageQueueTransactionType
Einer der MessageQueueTransactionType Werte, der den Typ des Transaktionskontexts beschreibt, der der Nachricht zugeordnet werden soll.
Ausnahmen
Der label Parameter ist null.
Die Message Queuing-Anwendung hat eine falsche Transaktionsverwendung angegeben.
Der transactionType Parameter ist keins der MessageQueueTransactionType Member.
Die Path Eigenschaft wurde nicht festgelegt.
- oder -
Fehler beim Zugriff auf eine Message Queuing-Methode.
Beispiele
Das folgende Codebeispiel veranschaulicht die Verwendung von Send(Object, String, MessageQueueTransactionType).
// Connect to a transactional queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleTransQueue");
// Create a new message.
Message^ msg = gcnew Message("Example Message Body");
// Send the message.
queue->Send(msg, "Example Message Label",
MessageQueueTransactionType::Single);
queue->Close();
// Connect to a transactional queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleTransQueue");
// Create a new message.
Message msg = new Message("Example Message Body");
// Send the message.
queue.Send(msg, "Example Message Label",
MessageQueueTransactionType.Single);
Hinweise
Verwenden Sie diese Überladung, um eine Nachricht zu senden, die den obj Parameter enthält, auf die durch den MessageQueueParameter verwiesen wird, mithilfe eines durch den transactionType Parameter definierten Transaktionskontexts. Geben Sie Automatic für den transactionType Parameter an, wenn bereits ein externer Transaktionskontext mit dem Thread verknüpft ist, den Sie zum Senden der Nachricht verwenden möchten. Geben Sie an Single , ob Sie die Nachricht als einzelne interne Transaktion senden möchten. Sie können angeben None , ob Sie eine Transaktionsnachricht an einen nicht transaktionsbezogenen Thread senden möchten.
Das Objekt, das Sie an die Warteschlange senden, kann ein Message oder ein beliebiges verwaltetes Objekt sein. Wenn Sie ein anderes Objekt als ein MessageObjekt senden, wird das Objekt serialisiert und in den Textkörper der Nachricht eingefügt. Mit dieser Überladung können Sie die Zeichenfolgenbezeichnung angeben, die die Nachricht identifiziert.
Die Nachrichtenbeschriftung unterscheidet sich von der Nachrichtenwarteschlangenbezeichnung, beide sind jedoch anwendungsabhängig und haben keine Vererbung für Message Queuing.
Wenn Sie die Formatter Eigenschaft vor dem Aufrufen Send(Object)nicht festlegen, wird der Formatierer standardmäßig auf die XmlMessageFormatter.
Die DefaultPropertiesToSend Eigenschaft gilt für ein anderes Objekt als ein Message. Wenn Sie z. B. eine Bezeichnung oder priorität mit dem DefaultPropertiesToSend Element angeben, gelten diese Werte für jede Nachricht, die ein Objekt enthält, das nicht vom Typ Message ist, wenn die Anwendung sie an die Warteschlange sendet. Beim Senden eines Werts Messagehaben die für die Message Rangfolge festgelegten Eigenschaftswerte Vorrang DefaultPropertiesToSend, und die Eigenschaft der Message.Formatter Nachricht hat Vorrang vor der Eigenschaft der Warteschlange MessageQueue.Formatter .
In der folgenden Tabelle wird gezeigt, ob diese Methode in verschiedenen Arbeitsgruppenmodi verfügbar ist.
| Arbeitsgruppenmodus | Verfügbar |
|---|---|
| Lokaler Computer | Ja |
| Name des lokalen Computers und des direkten Formats | Ja |
| Remotecomputer | No |
| Name des Remotecomputers und des direkten Formats | Ja |
Weitere Informationen
- MessageQueueTransactionType
- DefaultPropertiesToSend
- Message
- Transactional
- Label
- Peek()
- Receive()
- BeginPeek()
- BeginReceive()