共用方式為


HOW TO:擷取訊息

更新:2007 年 11 月

可以使用靜態或動態擷取機制擷取訊息的清單。當您擷取訊息的靜態清單時,系統會傳回 Message 物件的陣列,代表佇列中的所有訊息。

當您擷取訊息的動態清單時,系統會傳回 MessageEnumerator 物件,代表佇列中的所有訊息。MessageEnumerator 物件是初始化為動態清單標頭的資料指標。清單順序與佇列中的訊息順序相同,都是根據訊息優先權來排列。您可以呼叫 MoveNext 方法,將資料指標移至佇列中的第一個訊息。在初始化列舉值之後,您可以使用 MoveNext,繼續移至剩餘的訊息。您可將逾時傳遞至 MoveNext 方法來指定是否要等候取得訊息。

由於列舉值是動態的,因此它可存取附加在資料指標目前位置之後的訊息 (例如因低優先權之故)。列舉值無法存取插入在資料指標目前位置之前的訊息。無法使用 MessageEnumerator 反向移動。資料指標只允許順向移動。Reset 方法能讓您將資料指標放回佇列的開頭。

注意事項:

如果您將 MessageQueue 執行個體化且 DenySharedReceive 設定為 true,則當您連接佇列時,其他應用程式都不可修改列舉值中的訊息。

若要擷取訊息的靜態清單

  1. 建立 MessageQueue 元件的執行個體,並將其 Path 屬性設定為您要參考的佇列。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體

    注意事項:

    如果是從 [伺服器總管] 建立元件,則 Path 屬性會自動設定為該佇列的佇列路徑。

  2. 建立參考 Message 類別的陣列儲存您的查詢結果。

  3. 呼叫 GetAllMessages 方法。

  4. 將結果指派至您建立的陣列。

    下列程式碼將說明如何使用 GetAllMessages 函式,從佇列擷取訊息,並在清單方塊中顯示訊息標籤。這個範例會假設已將 MessageQueue 元件執行個體加入至應用程式。

    Private Sub button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles button1.Click
        Me.MessageQueue1.Path = ".\MyQueue"
        Dim msg() As System.Messaging.Message
        Dim i As Integer
        ' Retrieve the messages.
        msg = MessageQueue1.GetAllMessages()
        ' Clear the current contents of the list.
        Me.ListBox1.Items.Clear()
        ' Display the results.
        For i = 0 To msg.Length - 1
            Me.ListBox1.Items.Add(msg(i).Label)
        Next
    End Sub
    
     private void button1_Click(System.Object sender, System.EventArgs e)
        {
            messageQueue1.Path = ".\\MyQueue";
            System.Messaging.Message[] msg;
            // Retrieve the messages.
            msg = messageQueue1.GetAllMessages();
            // Clear the current contents of the list.
            this.listBox1.Items.Clear();
            // Display the results.
            for (int i = 0; i < msg.Length; i++)
            {
                this.listBox1.Items.Add(msg[i].Label);
            }
        }
    

    這個程式碼範例也可以當做 IntelliSense 程式碼片段使用。在程式碼片段選擇器中,它位於 [Windows 作業系統] > [訊息佇列] 中。如需詳細資訊,請參閱 HOW TO:在您的程式碼中插入程式碼片段 (Visual Basic)

若要擷取訊息的動態清單

  1. 建立 MessageQueue 元件的執行個體,並將其 Path 屬性設定為您要參考的佇列。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體

    注意事項:

    如果是從 [伺服器總管] 建立元件,則 Path 屬性會自動設定為該佇列的佇列路徑。

  2. 建立 MessageEnumerator 物件儲存您的查詢結果。

  3. 呼叫 MessageQueue 類別中的 GetEnumerator 方法。

  4. 將結果指派至 MessageEnumerator 物件。程式碼可能會像這樣子:

    Dim mq As New System.Messaging.MessageQueue(".\MyQueue")
    Dim msgEnum As System.Messaging.MessageEnumerator
    msgEnum = CType(mq.GetMessageEnumerator2, System.Messaging.MessageEnumerator)
    
         System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue();
            System.Messaging.MessageEnumerator msgEnum;
            mq.Path = @".\MyQueue";
            msgEnum = (System.Messaging.MessageEnumerator)(mq.GetMessageEnumerator2());
    
    

請參閱

工作

HOW TO:擷取佇列

概念

佇列和訊息集合