方法 : .NET Compact Framework で MSMQ を使用する

更新 : 2007 年 11 月

メッセージ キュー (MSMQ とも呼ばれます) を使用した .NET Compact Framework アプリケーションの作成は、.NET Framework で使用される手順に似ています。ただし、Windows CE では、「.NET Compact Framework の MSMQ」で説明されている機能のすべてはサポートされていません。

メッセージ キューの作成、キューへのメッセージ送信、およびキューからのメッセージ受信をすべて同じデバイスで行う方法を次のコード例に示します。ネットワーク接続は必要ありません。Order という単純なクラスを使用して、メッセージ キュー用のオブジェクトを作成します。

これらの例では、MSMQ がデバイスにインストール済みであることが前提です。MSMQ コンポーネントの取得の詳細については、「.NET Compact Framework の MSMQ」を参照してください。

Order クラスを定義するには

  • 次のクラスをプロジェクトに追加します。

    ' This class represents an object that
    ' is sent to and received from the queue.
    Public Class Order
        Dim ID As Integer
        Dim DTime As DateTime
        Public Property orderID() As Integer
            Get
                Return Me.ID
            End Get
            Set(ByVal value As Integer)
                Me.ID = value
            End Set
        End Property
        Public Property orderTime() As DateTime
            Get
                Return Me.DTime
            End Get
            Set(ByVal value As DateTime)
                Me.DTime = value
            End Set
        End Property
    End Class
    

メッセージ キューを作成するには

  • フォームに次のメソッドを追加します。

    Private Sub CreateQueue()
        ' Determine whether the queue exists.
        If Not MessageQueue.Exists(QPath) Then
            Try
                ' Create the queue if it does not exist.
                myQ = MessageQueue.Create(QPath)
                MessageBox.Show("Queue Created")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        Else
            MessageBox.Show("Queue Exists")
        End If
    End Sub
    

キューにメッセージを送信するには

  • フォームに次のメソッドを追加します。

    Private Sub SendMessageToQueue()
        ' Create a new order and set values.
        Dim sendOrder As New Order()
        sendOrder.orderID = 23123
        sendOrder.orderTime = DateTime.Now
        Try
            myQ.Send(sendOrder)
            MessageBox.Show("Message Sent")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    

キューからメッセージを受信するには

  • フォームに次のメソッドを追加します。

    Private Sub ReceiveMessageFromQueue()
        ' Connect to the a queue on the device.
        myQ = New MessageQueue(QPath)
    
        ' Set the formatter to indicate the body contains an Order.
        Dim targetTypes() As Type
        targetTypes = New Type() {GetType(Order)}
        myQ.Formatter = New XmlMessageFormatter(targetTypes)
        Try
            ' Receive and format the message. 
            Dim myMessage As Message = myQ.Receive()
            Dim myOrder As Order = CType(myMessage.Body, Order)
    
            ' Display message information.
            MessageBox.Show("Order ID: " & _
                myOrder.orderID.ToString() & _
                    Chr(10) & "Sent: " & myOrder.orderTime.ToString())
    
        Catch m As MessageQueueException
            ' Handle Message Queuing exceptions.
            MessageBox.Show(m.Message)
        Catch e As InvalidOperationException
            ' Handle invalid serialization format.
            MessageBox.Show(e.Message)
        End Try
    End Sub
    

メッセージ キューをテストするには

  1. [送信] というラベルの付けられたボタンをフォームに追加します。このボタンは、CreateQueue メソッドおよび SendMessageToQueue メソッドを呼び出します。

  2. [取得] というラベルの付けられたボタンをフォームに追加します。このボタンは、ReceiveMessageFromQueue メソッドを呼び出します。

コードのコンパイル方法

この例では、次の名前空間への参照が必要です。

参照

処理手順

MSMQ 書籍注文アプリケーション サンプル

概念

.NET Compact Framework の MSMQ

.NET Compact Framework に関する「方法」トピック

メッセージ キューとメッセージング テクノロジの背景