Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!
  • Students Click Here

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here


MSMQ - beginreceive

MSMQ - beginreceive

MSMQ - beginreceive

I have the following example:

    Private Sub StartListening()
        Dim myReceiveQueue As MessageQueue
            ' open the receive queue
            myReceiveQueue = New _

            ' set the receive queue formatter
            myReceiveQueue.Formatter = New XmlMessageFormatter( _
               New Type() {GetType(System.String)})

            ' add a handler for the ReceiveCompleted event and
            ' call BeginReceive
            AddHandler myReceiveQueue.ReceiveCompleted, _
               AddressOf MSMQ_ReceiveCompleted

        Catch ex As Exception
            MessageBox.Show("Generic Exception was thrown: " _
               & ex.Source & ": " & ex.Message)
        End Try
    End Sub

    Public Sub MSMQ_ReceiveCompleted( _
       ByVal p_source As Object, _
       ByVal p_objAsyncResult As ReceiveCompletedEventArgs)
        Dim myMessage As Message
        Dim myMessageQueue As MessageQueue

        ' cast the source parm to a MessageQueue object
        myMessageQueue = CType(p_source, MessageQueue)

        ' calling EndReceive will return the message that was received
        myMessage = myMessageQueue.EndReceive( _

        ' do something useful with the message

    End Sub

This sample works well but I wonder one thing. I want the listener to be listening all the time on that queue. What is the best approach? Starting a BeginReceive once a message is read? Or, how do I "loop" it the best way?

RE: MSMQ - beginreceive

When you call BeginReceive, if there's nothing to be read, it will block until some other thread/process writes to the queue.

If you're reading more than one message (like you're writing a server app that programs send messages to over the day), you should add another call to BeginReceive at the end of your receive handler event to kick off the process again.

Chip H.

Donate to Katrina relief:
If you want to get the best response to a question, please read FAQ222-2244 first

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close