MessageQueue.Send MessageQueue.Send MessageQueue.Send MessageQueue.Send Method

定義

キューにオブジェクトを送信します。Sends an object to a queue.

オーバーロード

Send(Object) Send(Object) Send(Object) Send(Object)

この MessageQueue で参照される非トランザクション キューにオブジェクトを送信します。Sends an object to non-transactional queue referenced by this MessageQueue.

Send(Object, MessageQueueTransaction) Send(Object, MessageQueueTransaction) Send(Object, MessageQueueTransaction) Send(Object, MessageQueueTransaction)

この MessageQueue で参照されるトランザクション キューにオブジェクトを送信します。Sends an object to the transactional queue referenced by this MessageQueue.

Send(Object, MessageQueueTransactionType) Send(Object, MessageQueueTransactionType) Send(Object, MessageQueueTransactionType) Send(Object, MessageQueueTransactionType)

この MessageQueue で参照されるキューにオブジェクトを送信します。Sends an object to the queue referenced by this MessageQueue.

Send(Object, String) Send(Object, String) Send(Object, String) Send(Object, String)

この MessageQueue で参照される非トランザクション キューにオブジェクトを送信し、メッセージのラベルを指定します。Sends an object to the non-transactional queue referenced by this MessageQueue and specifies a label for the message.

Send(Object, String, MessageQueueTransaction) Send(Object, String, MessageQueueTransaction) Send(Object, String, MessageQueueTransaction) Send(Object, String, MessageQueueTransaction)

この MessageQueue で参照されるトランザクション キューにオブジェクトを送信し、メッセージのラベルを指定します。Sends an object to the transactional queue referenced by this MessageQueue and specifies a label for the message.

Send(Object, String, MessageQueueTransactionType) Send(Object, String, MessageQueueTransactionType) Send(Object, String, MessageQueueTransactionType) Send(Object, String, MessageQueueTransactionType)

この MessageQueue で参照されるキューにオブジェクトを送信し、メッセージのラベルを指定します。Sends an object to the queue referenced by this MessageQueue and specifies a label for the message.

Send(Object) Send(Object) Send(Object) Send(Object)

この MessageQueue で参照される非トランザクション キューにオブジェクトを送信します。Sends an object to non-transactional queue referenced by this MessageQueue.

public:
 void Send(System::Object ^ obj);
public void Send (object obj);
member this.Send : obj -> unit
Public Sub Send (obj As Object)

パラメーター

obj
Object Object Object Object

キューに送信するオブジェクト。The object to send to the queue.

例外

Path プロパティが設定されていません。The Path property has not been set.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例では、メッセージ キューに接続し、キューにメッセージを送信します。The following code example connects to a message queue and sends a message to the queue.

#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 == true )
      {
         
         // 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 == true)
            {
                // 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
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 'Main


        '
        ' 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 'SendMessage

End Class 'MyNewQueue

次のコード例は、アプリケーション定義を送信Orderキュー クラスし、そのキューからメッセージを受信します。The following code example sends an application-defined Order class to a queue and then receives a message from that queue.

注釈

このオーバー ロードを使用してを含むメッセージを送信する、objパラメーターで参照されるキューをMessageQueueします。Use this overload to send a message that contains the obj parameter to the queue referenced by the MessageQueue. キューに送信するオブジェクトは、Messageまたは任意のマネージ オブジェクト。The object you send to the queue can be a Message or any managed object. 以外の任意のオブジェクトを送信する場合、Messageオブジェクトをシリアル化され、メッセージの本文に挿入します。If you send any object other than a Message, the object is serialized and inserted into the body of the message.

このオーバー ロードを使用して、トランザクション キューにメッセージを送信する場合は、配信不能キューに送信されます。If you use this overload to send a message to a transactional queue, the message will be sent to the dead-letter queue. メッセージを他のメッセージを含むトランザクションの一部にする場合を受け取るオーバー ロードを使用して、MessageQueueTransactionまたはMessageQueueTransactionTypeをパラメーターとして。If you want the message to be part of a transaction that contains other messages, use an overload that takes a MessageQueueTransaction or MessageQueueTransactionType as a parameter.

設定しない場合、Formatterプロパティを呼び出す前にSend(Object)、フォーマッタの既定値は、XmlMessageFormatterします。If you do not set the Formatter property before calling Send(Object), the formatter defaults to the XmlMessageFormatter.

DefaultPropertiesToSendプロパティが以外の任意のオブジェクトに適用される、Messageします。The DefaultPropertiesToSend property applies to any object other than a Message. または指定した場合、たとえば、ラベルを使用して、優先度、DefaultPropertiesToSendメンバー、これらの値がない型のオブジェクトを含むメッセージに適用Message送信すると、アプリケーションがキューにします。If you specify, for example, a label or a priority using the DefaultPropertiesToSend member, these values apply to any message that contains an object that is not of type Message when your application sends it to the queue. 送信するときに、 Message、プロパティ値を設定、Message優先DefaultPropertiesToSendとメッセージのMessage.Formatterプロパティは、キューの優先順位MessageQueue.Formatterプロパティ。When sending a Message, the property values set for the Message take precedence over DefaultPropertiesToSend and the message's Message.Formatter property takes precedence over the queue's MessageQueue.Formatter property.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

Send(Object, MessageQueueTransaction) Send(Object, MessageQueueTransaction) Send(Object, MessageQueueTransaction) Send(Object, MessageQueueTransaction)

この MessageQueue で参照されるトランザクション キューにオブジェクトを送信します。Sends an object to the transactional queue referenced by this MessageQueue.

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)

パラメーター

obj
Object Object Object Object

キューに送信するオブジェクト。The object to send to the queue.

例外

transaction パラメーターが null です。The transaction parameter is null.

Path プロパティが設定されていません。The Path property has not been set.

または-or- メッセージ キュー アプリケーションが、トランザクションの使用が正しくないことを示しました。The Message Queuing application indicated an incorrect transaction use.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例では、トランザクション キューに文字列を送信し、そのキューからメッセージを受信します。The following code example sends a string to a transactional queue and then receives a message from that queue.

#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 == true )
      {
         // 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 == true)
            {
                // 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
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 'Main


        '
        ' 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 'SendMessageTransactional


        '
        ' 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 'ReceiveMessageTransactional

End Class 'MyNewQueue

注釈

このオーバー ロードを使用してを含むメッセージを送信する、objパラメーターで参照されるトランザクション キューをMessageQueueで定義された内部トランザクション コンテキストを使用して、transactionパラメーター。Use this overload to send a message that contains the obj parameter to the transactional queue referenced by the MessageQueue, using an internal transaction context defined by the transaction parameter. キューに送信するオブジェクトは、Messageまたは任意のマネージ オブジェクト。The object you send to the queue can be a Message or any managed object. 以外の任意のオブジェクトを送信する場合、Messageオブジェクトをシリアル化され、メッセージの本文に挿入します。If you send any object other than a Message, the object is serialized and inserted into the body of the message.

このオーバー ロードを使用して非トランザクション キューにメッセージを送信する場合は、例外をスローせず、配信不能キューにメッセージが送信可能性があります。If you use this overload to send a message to a non-transactional queue, the message might be sent to the dead-letter queue without throwing an exception.

設定しない場合、Formatterプロパティを呼び出す前にSend(Object)、フォーマッタの既定値は、XmlMessageFormatterします。If you do not set the Formatter property before calling Send(Object), the formatter defaults to the XmlMessageFormatter.

DefaultPropertiesToSendプロパティが以外の任意のオブジェクトに適用される、Messageします。The DefaultPropertiesToSend property applies to any object other than a Message. または指定した場合、たとえば、ラベルを使用して、優先度、DefaultPropertiesToSendメンバー、これらの値がない型のオブジェクトを含むメッセージに適用Message送信すると、アプリケーションがキューにします。If you specify, for example, a label or a priority using the DefaultPropertiesToSend member, these values apply to any message that contains an object that is not of type Message when your application sends it to the queue. 送信するときに、 Message、プロパティ値を設定、Message優先DefaultPropertiesToSendとメッセージのMessage.Formatterプロパティは、キューの優先順位MessageQueue.Formatterプロパティ。When sending a Message, the property values set for the Message take precedence over DefaultPropertiesToSend and the message's Message.Formatter property takes precedence over the queue's MessageQueue.Formatter property.

MessageQueueTransaction スレッドのアパートメントに対応して、アパートメントの状態の場合、 STA、複数のスレッドでトランザクションを使用することはできません。MessageQueueTransaction is threading apartment aware, so if your apartment state is STA, you cannot use the transaction in multiple threads. Visual Basic にメイン スレッドの状態を設定するSTA適用する必要がありますので、MTAThreadAttributeで、Mainサブルーチンです。Visual Basic sets the state of the main thread to STA, so you must apply the MTAThreadAttribute in the Main subroutine. 適用しない場合、別のスレッドを使用してトランザクション メッセージを送信すると、MessageQueueException 例外がスローされます。Otherwise, sending a transactional message using another thread throws a MessageQueueException exception. 適用する、MTAThreadAttribute次のフラグメントを使用しています。You apply the MTAThreadAttribute by using the following fragment.

<System.MTAThreadAttribute>  
 public sub Main()  

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

Send(Object, MessageQueueTransactionType) Send(Object, MessageQueueTransactionType) Send(Object, MessageQueueTransactionType) Send(Object, MessageQueueTransactionType)

この MessageQueue で参照されるキューにオブジェクトを送信します。Sends an object to the queue referenced by this MessageQueue.

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)

パラメーター

obj
Object Object Object Object

キューに送信するオブジェクト。The object to send to the queue.

transactionType
MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType

メッセージと関連付けるトランザクション コンテキストの種類を示す、MessageQueueTransactionType 値の 1 つ。One of the MessageQueueTransactionType values, describing the type of transaction context to associate with the message.

例外

transactionType パラメーターが、MessageQueueTransactionType メンバーの 1 つではありません。The transactionType parameter is not one of the MessageQueueTransactionType members.

Path プロパティが設定されていません。The Path property has not been set.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、Send(Object, MessageQueueTransactionType) の使用方法を示します。The following code example demonstrates the use of 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);

注釈

このオーバー ロードを使用してを含むメッセージを送信する、objパラメーターで参照されるキューをMessageQueueで定義されたトランザクションのコンテキストを使用して、transactionTypeパラメーター。Use this overload to send a message that contains the obj parameter to the queue referenced by the MessageQueue, using a transaction context defined by the transactionType parameter. 指定AutomatictransactionType外部トランザクション コンテキストが既に存在する場合は、パラメーターを使用して、メッセージを送信する必要のあるスレッドにアタッチされています。Specify Automatic for the transactionType parameter if there is already an external transaction context attached to the thread that you want to use to send the message. 指定Singleとして 1 つの内部トランザクション メッセージを送信する場合。Specify Single if you want to send the message as a single internal transaction. 指定できるNoneトランザクションではないスレッドへトランザクション メッセージを送信する場合。You can specify None if you want to send a transactional message to a non-transactional thread.

キューに送信するオブジェクトは、Messageまたは任意のマネージ オブジェクト。The object you send to the queue can be a Message or any managed object. 以外の任意のオブジェクトを送信する場合、Messageオブジェクトをシリアル化され、メッセージの本文に挿入します。If you send any object other than a Message, the object is serialized and inserted into the body of the message.

設定しない場合、Formatterプロパティを呼び出す前にSend(Object)、フォーマッタの既定値は、XmlMessageFormatterします。If you do not set the Formatter property before calling Send(Object), the formatter defaults to the XmlMessageFormatter.

DefaultPropertiesToSendプロパティが以外の任意のオブジェクトに適用される、Messageします。The DefaultPropertiesToSend property applies to any object other than a Message. または指定した場合、たとえば、ラベルを使用して、優先度、DefaultPropertiesToSendメンバー、これらの値がない型のオブジェクトを含むメッセージに適用Message送信すると、アプリケーションがキューにします。If you specify, for example, a label or a priority using the DefaultPropertiesToSend member, these values apply to any message that contains an object that is not of type Message when your application sends it to the queue. 送信するときに、 Message、プロパティ値を設定、Message優先DefaultPropertiesToSendとメッセージのMessage.Formatterプロパティは、キューの優先順位MessageQueue.Formatterプロパティ。When sending a Message, the property values set for the Message take precedence over DefaultPropertiesToSend and the message's Message.Formatter property takes precedence over the queue's MessageQueue.Formatter property.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

Send(Object, String) Send(Object, String) Send(Object, String) Send(Object, String)

この MessageQueue で参照される非トランザクション キューにオブジェクトを送信し、メッセージのラベルを指定します。Sends an object to the non-transactional queue referenced by this MessageQueue and specifies a label for the message.

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)

パラメーター

obj
Object Object Object Object

キューに送信するオブジェクト。The object to send to the queue.

label
String String String String

メッセージのラベル。The label of the message.

例外

label パラメーターが null です。The label parameter is null.

Path プロパティが設定されていません。The Path property has not been set.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、Send(Object, String) の使用方法を示します。The following code example demonstrates the use of 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");

注釈

このオーバー ロードを使用してを含むメッセージを送信する、objパラメーターで参照されるキューをMessageQueueします。Use this overload to send a message that contains the obj parameter to the queue referenced by the MessageQueue. このオーバー ロードで、メッセージを識別する文字列のラベルを指定できます。With this overload, you can specify the string label that identifies the message. キューに送信するオブジェクトは、 Message、構造体、データ オブジェクト、または任意のマネージ オブジェクト。The object you send to the queue can be a Message, a structure, a data object, or any managed object. 以外の任意のオブジェクトを送信する場合、Messageオブジェクトをシリアル化され、メッセージの本文に挿入します。If you send any object other than a Message, the object is serialized and inserted into the body of the message.

メッセージ ラベルはメッセージ キューのラベルとは異なりますが、両方はアプリケーションに依存して、継承にキューにメッセージの意味のないです。The message label is distinct from the message queue label, but both are application-dependent and have no inherit meaning to Message Queuing.

このオーバー ロードを使用して、トランザクション キューにメッセージを送信する場合は、配信不能キューに送信されます。If you use this overload to send a message to a transactional queue, the message will be sent to the dead-letter queue. メッセージを他のメッセージを含むトランザクションの一部にする場合を受け取るオーバー ロードを使用して、MessageQueueTransactionまたはMessageQueueTransactionTypeをパラメーターとして。If you want the message to be part of a transaction that contains other messages, use an overload that takes a MessageQueueTransaction or MessageQueueTransactionType as a parameter.

PathプロパティをこのMessageQueueメッセージを送信する前に、インスタンスを指定する必要があります。The Path property for this MessageQueue instance must be specified before you send the message. 設定しない場合、Formatterプロパティを呼び出す前にSend(Object)、フォーマッタの既定値は、XmlMessageFormatterします。If you do not set the Formatter property before calling Send(Object), the formatter defaults to the XmlMessageFormatter.

DefaultPropertiesToSendプロパティが以外の任意のオブジェクトに適用される、Messageします。The DefaultPropertiesToSend property applies to any object other than a Message. または指定した場合、たとえば、ラベルを使用して、優先度、DefaultPropertiesToSendメンバー、これらの値がない型のオブジェクトを含むメッセージに適用Message送信すると、アプリケーションがキューにします。If you specify, for example, a label or a priority using the DefaultPropertiesToSend member, these values apply to any message that contains an object that is not of type Message when your application sends it to the queue. 送信するときに、 Message、プロパティ値を設定、Message優先DefaultPropertiesToSendとメッセージのMessage.Formatterプロパティは、キューの優先順位MessageQueue.Formatterプロパティ。When sending a Message, the property values set for the Message take precedence over DefaultPropertiesToSend and the message's Message.Formatter property takes precedence over the queue's MessageQueue.Formatter property.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

Send(Object, String, MessageQueueTransaction) Send(Object, String, MessageQueueTransaction) Send(Object, String, MessageQueueTransaction) Send(Object, String, MessageQueueTransaction)

この MessageQueue で参照されるトランザクション キューにオブジェクトを送信し、メッセージのラベルを指定します。Sends an object to the transactional queue referenced by this MessageQueue and specifies a label for the message.

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)

パラメーター

obj
Object Object Object Object

キューに送信するオブジェクト。The object to send to the queue.

label
String String String String

メッセージのラベル。The label of the message.

例外

label パラメーターが null です。The label parameter is null.

または-or- transaction パラメーターが null です。The transaction parameter is null.

Path プロパティが設定されていません。The Path property has not been set.

または-or- メッセージ キュー アプリケーションが、トランザクションの使用方法が間違っていることを示しました。The Message Queuing application indicated an incorrect transaction usage.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、Send(Object, String, MessageQueueTransaction) の使用方法を示します。The following code example demonstrates the use of 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();
}

注釈

このオーバー ロードを使用してを含むメッセージを送信する、objパラメーターで参照されるトランザクション キューをMessageQueueで定義された内部トランザクション コンテキストを使用して、transactionパラメーター。Use this overload to send a message that contains the obj parameter to the transactional queue referenced by the MessageQueue, using an internal transaction context defined by the transaction parameter. このオーバー ロードで、メッセージを識別する文字列のラベルを指定できます。With this overload, you can specify the string label that identifies the message. キューに送信するオブジェクトは、 Message、構造体、データ オブジェクト、または任意のマネージ オブジェクト。The object you send to the queue can be a Message, a structure, a data object, or any managed object. 以外の任意のオブジェクトを送信する場合、Messageオブジェクトをシリアル化され、メッセージの本文に挿入します。If you send any object other than a Message, the object is serialized and inserted into the body of the message.

メッセージ ラベルはメッセージ キューのラベルとは異なりますが、両方はアプリケーションに依存して、継承にキューにメッセージの意味のないです。The message label is distinct from the message queue label, but both are application-dependent and have no inherit meaning to Message Queuing.

このオーバー ロードを使用して非トランザクション キューにメッセージを送信する場合は、例外をスローせず、配信不能キューにメッセージが送信可能性があります。If you use this overload to send a message to a non-transactional queue, the message might be sent to the dead-letter queue without throwing an exception.

設定しない場合、Formatterプロパティを呼び出す前にSend(Object)、フォーマッタの既定値は、XmlMessageFormatterします。If you do not set the Formatter property before calling Send(Object), the formatter defaults to the XmlMessageFormatter.

DefaultPropertiesToSendプロパティが以外の任意のオブジェクトに適用される、Messageします。The DefaultPropertiesToSend property applies to any object other than a Message. または指定した場合、たとえば、ラベルを使用して、優先度、DefaultPropertiesToSendメンバー、これらの値がない型のオブジェクトを含むメッセージに適用Message送信すると、アプリケーションがキューにします。If you specify, for example, a label or a priority using the DefaultPropertiesToSend member, these values apply to any message that contains an object that is not of type Message when your application sends it to the queue. 送信するときに、 Message、プロパティ値を設定、Message優先DefaultPropertiesToSendとメッセージのMessage.Formatterプロパティは、キューの優先順位MessageQueue.FormatterプロパティWhen sending a Message, the property values set for the Message take precedence over DefaultPropertiesToSend and the message's Message.Formatter property takes precedence over the queue's MessageQueue.Formatter property

MessageQueueTransaction スレッドのアパートメントに対応して、アパートメントの状態の場合、 STA、複数のスレッドでトランザクションを使用することはできません。MessageQueueTransaction is threading apartment aware, so if your apartment state is STA, you cannot use the transaction in multiple threads. Visual Basic にメイン スレッドの状態を設定するSTA適用する必要がありますので、MTAThreadAttributeで、Mainサブルーチンです。Visual Basic sets the state of the main thread to STA, so you must apply the MTAThreadAttribute in the Main subroutine. 適用しない場合、別のスレッドを使用してトランザクション メッセージを送信すると、MessageQueueException 例外がスローされます。Otherwise, sending a transactional message using another thread throws a MessageQueueException exception. 適用する、MTAThreadAttribute次のフラグメントを使用しています。You apply the MTAThreadAttribute by using the following fragment.

<System.MTAThreadAttribute>  
 public sub Main()  

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

Send(Object, String, MessageQueueTransactionType) Send(Object, String, MessageQueueTransactionType) Send(Object, String, MessageQueueTransactionType) Send(Object, String, MessageQueueTransactionType)

この MessageQueue で参照されるキューにオブジェクトを送信し、メッセージのラベルを指定します。Sends an object to the queue referenced by this MessageQueue and specifies a label for the message.

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)

パラメーター

obj
Object Object Object Object

キューに送信するオブジェクト。The object to send to the queue.

label
String String String String

メッセージのラベル。The label of the message.

transactionType
MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType MessageQueueTransactionType

メッセージと関連付けるトランザクション コンテキストの種類を示す、MessageQueueTransactionType 値の 1 つ。One of the MessageQueueTransactionType values, describing the type of transaction context to associate with the message.

例外

label パラメーターが null です。The label parameter is null.

メッセージ キュー アプリケーションが、トランザクションの使用方法が間違っていることを示しました。The Message Queuing application indicated an incorrect transaction usage.

transactionType パラメーターが、MessageQueueTransactionType メンバーの 1 つではありません。The transactionType parameter is not one of the MessageQueueTransactionType members.

Path プロパティが設定されていません。The Path property has not been set.

または-or- メッセージ キューのメソッドにアクセスしたときにエラーが発生しました。An error occurred when accessing a Message Queuing method.

次のコード例は、Send(Object, String, MessageQueueTransactionType) の使用方法を示します。The following code example demonstrates the use of 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);

注釈

このオーバー ロードを使用してを含むメッセージを送信する、objパラメーターで参照されるキューをMessageQueueで定義されたトランザクションのコンテキストを使用して、transactionTypeパラメーター。Use this overload to send a message that contains the obj parameter to the queue referenced by the MessageQueue, using a transaction context defined by the transactionType parameter. 指定AutomatictransactionType外部トランザクション コンテキストが既に存在する場合は、パラメーターを使用して、メッセージを送信する必要のあるスレッドにアタッチされています。Specify Automatic for the transactionType parameter if there is already an external transaction context attached to the thread that you want to use to send the message. 指定Singleとして 1 つの内部トランザクション メッセージを送信する場合。Specify Single if you want to send the message as a single internal transaction. 指定できるNoneトランザクションではないスレッドへトランザクション メッセージを送信する場合。You can specify None if you want to send a transactional message to a non-transactional thread.

キューに送信するオブジェクトは、Messageまたは任意のマネージ オブジェクト。The object you send to the queue can be a Message or any managed object. 以外の任意のオブジェクトを送信する場合、Messageオブジェクトをシリアル化され、メッセージの本文に挿入します。If you send any object other than a Message, the object is serialized and inserted into the body of the message. このオーバー ロードで、メッセージを識別する文字列のラベルを指定できます。With this overload, you can specify the string label that identifies the message.

メッセージ ラベルはメッセージ キューのラベルとは異なりますが、両方はアプリケーションに依存して、継承にキューにメッセージの意味のないです。The message label is distinct from the message queue label, but both are application-dependent and have no inherit meaning to Message Queuing.

設定しない場合、Formatterプロパティを呼び出す前にSend(Object)、フォーマッタの既定値は、XmlMessageFormatterします。If you do not set the Formatter property before calling Send(Object), the formatter defaults to the XmlMessageFormatter.

DefaultPropertiesToSendプロパティが以外の任意のオブジェクトに適用される、Messageします。The DefaultPropertiesToSend property applies to any object other than a Message. または指定した場合、たとえば、ラベルを使用して、優先度、DefaultPropertiesToSendメンバー、これらの値がない型のオブジェクトを含むメッセージに適用Message送信すると、アプリケーションがキューにします。If you specify, for example, a label or a priority using the DefaultPropertiesToSend member, these values apply to any message that contains an object that is not of type Message when your application sends it to the queue. 送信するときに、 Message、プロパティ値を設定、Messageよりも優先DefaultPropertiesToSend、およびメッセージのMessage.Formatterプロパティは、キューの優先順位MessageQueue.Formatterプロパティ。When sending a Message, the property values set for the Message take precedence over DefaultPropertiesToSend, and the message's Message.Formatter property takes precedence over the queue's MessageQueue.Formatter property.

次の表では、このメソッドは、さまざまなワークグループ モードで使用するかどうかを示します。The following table shows whether this method is available in various Workgroup modes.

ワークグループ モードWorkgroup mode 使用可能Available
ローカル コンピューターLocal computer はいYes
ローカル コンピューターと直接形式名Local computer and direct format name はいYes
リモート コンピューターRemote computer いいえNo
リモート コンピューターと直接形式名Remote computer and direct format name はいYes
こちらもご覧ください

適用対象