Message.Body Message.Body Message.Body Message.Body Property

定義

取得或設定訊息的內容。Gets or sets the content of the message.

public:
 property System::Object ^ Body { System::Object ^ get(); void set(System::Object ^ value); };
[System.ComponentModel.Browsable(false)]
public object Body { get; set; }
member this.Body : obj with get, set
Public Property Body As Object

屬性值

指定訊息內容的物件。An object that specifies the message contents. 物件可以是字串、日期、貨幣、數字、位元組陣列或任何 Managed 物件。The object can be a string, a date, a currency, a number, an array of bytes, or any managed object.

例外狀況

Formatter 屬性為 nullThe Formatter property is null.

-或--or- 篩選訊息佇列以忽略 Body 屬性。The message queue is filtered to ignore the Body property.

範例

下列程式碼範例會將不同優先順序的兩個訊息傳送至佇列, 然後再進行抓取。The following code example sends two messages of different priorities to the queue, and retrieves them subsequently.


#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
{
   //**************************************************
   // Sends a string message to a queue.
   //**************************************************
public:
   void SendMessage( MessagePriority priority, String^ messageBody )
   {
      // Connect to a queue on the local computer.
      MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );

      // Create a new message.
      Message^ myMessage = gcnew Message;
      if ( priority > MessagePriority::Normal )
      {
         myMessage->Body = "High Priority: {0}",messageBody;
      }
      else
      {
         myMessage->Body = messageBody;
      }

      // Set the priority of the message.
      myMessage->Priority = priority;

      // Send the Order to the queue.
      myQueue->Send( myMessage );

      return;
   }

   //**************************************************
   // Receives a message.
   //**************************************************
   void ReceiveMessage()
   {
      // Connect to the a queue on the local computer.
      MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );

      // Set the queue to read the priority. By default, it
      // is not read.
      myQueue->MessageReadPropertyFilter->Priority = true;

      // Set the formatter to indicate body contains a String^.
      array<Type^>^ p = gcnew array<Type^>(1);
      p[ 0 ] = String::typeid;
      myQueue->Formatter = gcnew XmlMessageFormatter( p );
      try
      {
         // Receive and format the message. 
         Message^ myMessage = myQueue->Receive();

         // Display message information.
         Console::WriteLine( "Priority: {0}",
            myMessage->Priority );
         Console::WriteLine( "Body: {0}",
            myMessage->Body );
      }
      catch ( MessageQueueException^ ) 
      {
         // Handle Message Queuing exceptions.
      }
      // Handle invalid serialization format.
      catch ( InvalidOperationException^ e ) 
      {
         Console::WriteLine( e->Message );
      }

      // Catch other exceptions as necessary.

      return;
   }
};

//**************************************************
// Provides an entry point into the application.
//		 
// This example sends and receives a message from
// a queue.
//**************************************************
int main()
{
   // Create a new instance of the class.
   MyNewQueue^ myNewQueue = gcnew MyNewQueue;

   // Send messages to a queue.
   myNewQueue->SendMessage( MessagePriority::Normal, "First Message Body." );
   myNewQueue->SendMessage( MessagePriority::Highest, "Second Message Body." );

   // Receive messages from a queue.
   myNewQueue->ReceiveMessage();
   myNewQueue->ReceiveMessage();

   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 queue.
        //**************************************************

        public static void Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            // Send messages to a queue.
            myNewQueue.SendMessage(MessagePriority.Normal, "First Message Body.");
            myNewQueue.SendMessage(MessagePriority.Highest, "Second Message Body.");

            // Receive messages from a queue.
            myNewQueue.ReceiveMessage(); 
            myNewQueue.ReceiveMessage();

            return;
        }


        //**************************************************
        // Sends a string message to a queue.
        //**************************************************
        
        public void SendMessage(MessagePriority priority, string messageBody)
        {

            // Connect to a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Create a new message.
            Message myMessage = new Message();

            if(priority > MessagePriority.Normal)
            {
                myMessage.Body = "High Priority: " + messageBody;
            }
            else myMessage.Body = messageBody;

            // Set the priority of the message.
            myMessage.Priority = priority;


            // Send the Order to the queue.
            myQueue.Send(myMessage);

            return;
        }


        //**************************************************
        // Receives a message.
        //**************************************************
        
        public  void ReceiveMessage()
        {
            // Connect to the a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Set the queue to read the priority. By default, it
            // is not read.
            myQueue.MessageReadPropertyFilter.Priority = true;

            // Set the formatter to indicate body contains a string.
            myQueue.Formatter = new XmlMessageFormatter(new Type[]
                {typeof(string)});
            
            try
            {
                // Receive and format the message. 
                Message myMessage =	myQueue.Receive(); 

                // Display message information.
                Console.WriteLine("Priority: " + 
                    myMessage.Priority.ToString());
                Console.WriteLine("Body: " + 
                    myMessage.Body.ToString());
            }
            
            catch (MessageQueueException)
            {
                // Handle Message Queuing exceptions.
            }

            // Handle invalid serialization format.
            catch (InvalidOperationException e)
            {
                Console.WriteLine(e.Message);
            }
            
            // Catch other exceptions as necessary.

            return;
        }
    }
}
Imports System.Messaging


'Provides a container class for the example.
Public Class MyNewQueue
      
      

      ' Provides an entry point into the application.
      '		 
      ' This example sends and receives a message from
      ' a queue.

      Public Shared Sub Main()
         ' Create a new instance of the class.
         Dim myNewQueue As New MyNewQueue()
         
         ' Send messages to a queue.
         myNewQueue.SendMessage(MessagePriority.Normal, "First Message Body.")
         myNewQueue.SendMessage(MessagePriority.Highest, "Second Message Body.")
         
         ' Receive messages from a queue.
         myNewQueue.ReceiveMessage()
         myNewQueue.ReceiveMessage()
         
         Return
      End Sub
      
      
      

      ' Sends a string message to a queue.

      Public Sub SendMessage(priority As MessagePriority, messageBody As String)
         
         ' Connect to a queue on the local computer.
         Dim myQueue As New MessageQueue(".\myQueue")
         
         ' Create a new message.
         Dim myMessage As New Message()
         
         If priority > MessagePriority.Normal Then
            myMessage.Body = "High Priority: " + messageBody
         Else
            myMessage.Body = messageBody
         End If 
         ' Set the priority of the message.
         myMessage.Priority = priority
         
         
         ' Send the Order to the queue.
         myQueue.Send(myMessage)
         
         Return
      End Sub
      
      
      

      ' Receives a message.

      Public Sub ReceiveMessage()
         ' Connect to the a queue on the local computer.
         Dim myQueue As New MessageQueue(".\myQueue")
         
         ' Set the queue to read the priority. By default, it
         ' is not read.
         myQueue.MessageReadPropertyFilter.Priority = True
         
         ' Set the formatter to indicate body contains a string.
         myQueue.Formatter = New XmlMessageFormatter(New Type() {GetType(String)})
         
         Try
            ' Receive and format the message. 
            Dim myMessage As Message = myQueue.Receive()
            
            ' Display message information.
            Console.WriteLine(("Priority: " + myMessage.Priority.ToString()))
            Console.WriteLine(("Body: " + myMessage.Body.ToString()))
         
         
         
         ' Handle invalid serialization format.
         Catch e As InvalidOperationException
            Console.WriteLine(e.Message)
         End Try
         
         ' Catch other exceptions as necessary.
         Return
      End Sub
   End Class

備註

訊息的Body屬性通常會包含與訊息相關聯的資料。The message's Body property usually contains the data associated with the message. 雖然您也可以在AppSpecificExtension屬性中傳送應用程式特定的資料, 但您應該盡可能在訊息Body的中包含訊息資料。Although you can also send application-specific data in the AppSpecific and Extension properties, you should include message data in the Body of the message whenever possible. Body只有屬性內容會進行序列化或加密。Only the Body property contents are serialized or encrypted.

屬性Body可以包含大小不超過 4 MB 的任何物件。The Body property can contain any object whose size does not exceed 4 MB. 如果您使用MessageQueue.Send將不屬於類型Message的任何物件傳送至MessageQueue, 該物件將會位於PeekReceiveMessage傳回之Body實例的屬性中。If you use MessageQueue.Send to send any object that is not of type Message to the MessageQueue, that object will be located in the Body property of the Message instance returned by Peek or Receive.

MessageQueue.Send("hello.")的字串引數是這類泛型物件的範例。The string argument in MessageQueue.Send("hello.") is an example of such a generic object.

BodyType屬性會指出訊息本文中儲存的資訊類型。The BodyType property indicates the type of information that is stored in the message body. 訊息佇列會使用這項資訊來識別Body屬性內容的類型。Message Queuing uses this information to identify the type of the Body property contents.

Body先指定屬性BodyStream或屬性, 再Message傳送物件。Specify either the Body property or the BodyStream property before sending the Message object. Body屬性可以是任何可序列化的物件, 例如文字字串、結構物件、類別實例或内嵌物件。The Body property can be any serializable object, such as a text string, structure object, class instance, or embedded object.

除非您將訊息的內容直接BodyStream寫入屬性, 否則在傳送訊息之前, 請先Formatter設定屬性。Unless you write the contents of the message directly to the BodyStream property, set the Formatter property before you send the message. 在實例上呼叫方法時, 主體會使用Formatter屬性中包含的格式器進行序列化。 Send MessageQueueWhen the Send method is called on the MessageQueue instance, the body is serialized using the formatter contained in the Formatter property. 如果您傳送訊息時未指定Formatter屬性的值, 則格式器預設為。 XmlMessageFormatterIf you send the message without specifying a value for the Formatter property, the formatter defaults to XmlMessageFormatter.

注意

OverflowException 當呼叫ActiveXMessageFormatter MaxValue Send類別的方法並使用時, 嘗試將訊息的本文設定為會造成。 MessageQueueAttempting to set the body of a message to MaxValue will cause a OverflowException when the Send method of the MessageQueue class is called and the ActiveXMessageFormatter is used.

適用於

另請參閱