HOW TO:擷取佇列
更新:2007 年 11 月
您可使用靜態或動態擷取機制來擷取佇列的清單。擷取佇列的靜態清單時,系統會傳回具有查詢結果的 MessageQueue 物件。擷取佇列的動態清單時,系統會傳回具有查詢結果的 MessageQueueEnumerator 物件。
不像 MessageEnumerator 會根據佇列中的順序來傳回訊息,MessageQueueEnumerator 並不會依任何順序傳回佇列。這是因為網路上的佇列並不是依順序定義,它們根本沒有順序可言,也就是說它們所依據的是電腦、標籤或其他使用者可存取的準則。您可以呼叫 MoveNext 方法,將資料指標移至列舉型別的第一個佇列。初始化列舉值之後,您可以使用 MoveNext,繼續移至剩餘的佇列。
無法使用 MessageQueueEnumerator 反向移動。資料指標在佇列列舉型別中只能順向移動。不過,您可以呼叫 Reset 方法重設列舉型別,並再次將資料指標放至清單的開頭。由於列舉值是動態的,因此它可存取附加在資料指標目前位置之後的佇列。如果未先呼叫 Reset,就無法存取插入在資料指標目前位置之前的佇列。
因為 GetPublicQueues、GetPrivateQueuesByMachine 和 GetMessageQueueEnumerator 方法是靜態,所以您不需要在呼叫方法之前,先建立 MessageQueue 類別的執行個體。
若要擷取公用或私用佇列的靜態清單
建立 MessageQueue 型別的陣列儲存您的查詢結果。
呼叫 MessageQueue 類別上的適當方法:
若要在無準則的情況下擷取所有的公用佇列,請呼叫 GetPublicQueues 方法。
若要以準則擷取公用佇列,請將 Criteria 參數設定為適當值,接著呼叫 GetPrivateQueuesByMachine 方法。
若只要擷取共用分類 GUID 的公用佇列,請呼叫 GetPublicQueuesByCategory 方法,並將分類 GUID 指定為參數。
若只要擷取共用標籤的公用佇列,請呼叫 GetPublicQueuesByLabel 方法,並將標籤指定為參數。
若只要擷取特定電腦上的公用佇列,請呼叫 GetPublicQueuesByMachine 方法,並將電腦名稱指定為參數。
將結果指派至陣列。
例如,下列程式碼將說明您如何使用清單方塊來顯示所有在本機電腦上所擷取公用佇列的標籤:
Private Sub button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles button1.Click Dim mqlist() As System.Messaging.MessageQueue Dim i As Integer ' Retrieve queues on the local machine. mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(".") ' Clear the current contents of the list. Me.ListBox1.Items.Clear() ' Display the results. For i = 0 To mqlist.Length - 1 Me.ListBox1.Items.Add(mqlist(i).Path) Next End Sub
private void button1_Click(System.Object sender, System.EventArgs e) { System.Messaging.MessageQueue[] mqlist; // Retrieve public queues. mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine( "."); // Clear the current contents of the list. this.listBox1.Items.Clear(); // Display the results. for (int i = 0; i < mqlist.Length; i++) { this.listBox1.Items.Add(mqlist[i].Path); } }
這個程式碼範例也可做為 Visual Basic IntelliSense 程式碼片段。在程式碼片段選擇器中,它位於 [Windows 作業系統] > [訊息佇列] 中。如需詳細資訊,請參閱 HOW TO:在您的程式碼中插入程式碼片段 (Visual Basic)。
若要擷取佇列的動態清單
建立 MessageQueueEnumerator 物件來儲存您的查詢結果。
呼叫 MessageQueue 類別中的 GetMessageQueueEnumerator 方法。
若要擷取網路上佇列的子集,請將 MessageQueueCriteria 參數設定為適當值。
將結果設定至您所建立的 MessageQueueEnumerator 物件。程式碼可能會像這樣子:
Dim mqEnum As System.Messaging.MessageQueueEnumerator mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator()
System.Messaging.MessageQueueEnumerator mqEnum; mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator();