MessagePropertyFilter クラス
メッセージ キューからメッセージをピークまたは受信するときに取得されるプロパティを制御および選択します。
この型のすべてのメンバの一覧については、MessagePropertyFilter メンバ を参照してください。
System.Object
System.Messaging.MessagePropertyFilter
Public Class MessagePropertyFilter
[C#]
public class MessagePropertyFilter
[C++]
public __gc class MessagePropertyFilter
[JScript]
public class MessagePropertyFilter
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
MessageQueue インスタンスの MessagePropertyFilter の設定により、メッセージのピーク時、または受信時に取得されるプロパティのセットが決まります。このフィルタは、メッセージ情報を取得する MessageQueue のインスタンスで設定されます。 MessagePropertyFilter のブール値メンバを false に設定すると、関連付けられた Message プロパティの情報が MessageQueue によって取得されなくなります。
ブール値でないフィルタ プロパティがいくつかあります。これらは整数値であり、 Message.Body 、 Message.Extension 、または Message.Label の既定のサイズを取得または設定します。
制限されたプロパティのセットを取得すると、キューから転送されるデータの量が少なくなるためパフォーマンスが向上します。
メモ MessagePropertyFilter のプロパティを設定すると、メッセージの受信時、またはピーク時に、そのプロパティが取得されるかどうかだけを示すことができます。 Message の関連付けられたプロパティ値は変更されません。
MessagePropertyFilter コンストラクタは、すべてのフィルタ プロパティをその既定値に設定します。ブール値は false に設定されます。整数値プロパティに割り当てられる既定値については、コンストラクタのトピックを参照してください。
使用例
[Visual Basic, C#, C++] 優先度が異なる 2 つのメッセージをキューに送信し、順番に取得する例を次に示します。
Imports System
Imports 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 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 'Main
'**************************************************
' 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 'SendMessage
'**************************************************
' 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()))
Catch
' Handle Message Queuing exceptions.
' Handle invalid serialization format.
Catch e As InvalidOperationException
Console.WriteLine(e.Message)
End Try
' Catch other exceptions as necessary.
Return
End Sub 'ReceiveMessage
End Class 'MyNewQueue
End Namespace 'MyProject
[C#]
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;
}
}
}
[C++]
#using <mscorlib.dll>
#using <system.dll>
#using <system.messaging.dll>
using namespace System;
using namespace System::Messaging;
__gc class MyNewQueue
{
public:
void SendMessage(MessagePriority priority, String* messageBody)
{
// Connect to a queue on the local computer.
MessageQueue* myQueue = new MessageQueue(S".\\myQueue");
// Create a new message.
Message* myMessage = new Message();
if (priority > MessagePriority::Normal)
{
myMessage->Body = S"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;
}
public:
void ReceiveMessage()
{
// Connect to the a queue on the local computer.
MessageQueue* myQueue = new MessageQueue(S".\\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*.
Type* p __gc[] = new Type* __gc[1];
p[0] = __typeof(String);
myQueue->Formatter = new XmlMessageFormatter( p );
try
{
// Receive and format the message.
Message* myMessage = myQueue->Receive();
// Display message information.
Console::WriteLine(S"Priority: {0}", __box(myMessage->Priority));
Console::WriteLine(S"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;
}
};
int main()
{
// Create a new instance of the class.
MyNewQueue* myNewQueue = new MyNewQueue();
// Send messages to a queue.
myNewQueue->SendMessage(MessagePriority::Normal, S"First Message Body.");
myNewQueue->SendMessage(MessagePriority::Highest, S"Second Message Body.");
// Receive messages from a queue.
myNewQueue->ReceiveMessage();
myNewQueue->ReceiveMessage();
return 0;
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Messaging
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Messaging (System.Messaging.dll 内)
参照
MessagePropertyFilter メンバ | System.Messaging 名前空間 | MessageQueue | MessageQueue.MessageReadPropertyFilter | Message