Gewusst wie: Verwenden von MSMQ in .NET Compact Framework

Aktualisiert: November 2007

Das Erstellen von .NET Compact Framework-Anwendungen, die Message Queuing (MSMQ) verwenden, ähnelt dem Vorgehen in .NET Framework. Windows CE unterstützt jedoch nicht alle Features, die in MSMQ in .NET Compact Framework beschrieben werden.

In den folgenden Codebeispielen wird veranschaulicht, wie auf dem gleichen Gerät eine Meldungswarteschlange erstellt, eine Meldung an die Warteschlange gesendet und eine Meldung aus der Warteschlange empfangen wird. Es ist keine Netzwerkverbindung erforderlich. Eine einfache Klasse mit dem Namen Order wird verwendet, um Objekte für das Message Queuing zu erstellen.

In diesen Beispielen wird davon ausgegangen, dass Message Queuing auf dem Gerät installiert wurde. Weitere Informationen über das Beziehen der Message Queuing-Komponente finden Sie unter MSMQ in .NET Compact Framework.

So definieren Sie die Order-Klasse

  • Fügen Sie dem Projekt die folgende Klasse hinzu.

    ' 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
    

So erstellen Sie die Meldungswarteschlange

  • Fügen Sie dem Formular die folgende Methode hinzu.

    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
    

So senden Sie eine Meldung an die Warteschlange

  • Fügen Sie dem Formular die folgende Methode hinzu.

    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
    

So empfangen Sie die Meldung von der Warteschlange

  • Fügen Sie dem Formular die folgende Methode hinzu.

    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
    

So testen Sie das Message Queuing

  1. Fügen Sie dem Formular eine Schaltfläche mit der Beschriftung Send hinzu, die die CreateQueue-Methode und die SendMessageToQueue-Methode aufruft.

  2. Fügen Sie dem Formular eine Schaltfläche mit der Beschriftung Receive hinzu, die die ReceiveMessageFromQueue-Methode aufruft.

Kompilieren des Codes

Für dieses Beispiel sind Verweise auf die folgenden Namespaces erforderlich:

Siehe auch

Aufgaben

Anwendungsbeispiel für MSMQ-Buchungsaufträge

Konzepte

MSMQ in .NET Compact Framework

Gewusst-wie-Themen für .NET Compact Framework

Hintergrundinformationen zu Meldungswarteschlangen und Messaging-Technologie