方法 : .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
メッセージ キューをテストするには
[送信] というラベルの付けられたボタンをフォームに追加します。このボタンは、CreateQueue メソッドおよび SendMessageToQueue メソッドを呼び出します。
[取得] というラベルの付けられたボタンをフォームに追加します。このボタンは、ReceiveMessageFromQueue メソッドを呼び出します。
コードのコンパイル方法
この例では、次の名前空間への参照が必要です。