共用方式為


逐步解說:建立佇列並使用訊息

更新:2007 年 11 月

此主題中的程序將示範使用 MessageQueue 元件建立訊息佇列的處理序。您可使用這個元件將訊息傳送至佇列,以及擷取佇列中的訊息。訊息會記錄說明要求。

注意事項:

若要檢視 [伺服器總管] 中的佇列資訊,或是以程式設計方式存取佇列,您必須在用戶端電腦上安裝 [訊息佇列] Windows 元件。若要加入這項服務,請使用 [控制台] 中的 [新增或移除程式]。

注意事項:

您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定

若要在您的電腦上建立訊息佇列

  1. 在 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。

  2. 在 [新增專案] 對話方塊中,建立 Visual Basic 或 Visual C# [Windows 應用程式]。將它命名為 MessageQ。

  3. 開啟 [伺服器總管]。如需詳細資訊,請參閱 HOW TO:存取及初始化伺服器總管/資料庫總管

  4. 展開 [伺服器] 節點。

  5. 展開本機伺服器的節點。本機伺服器的節點是以電腦名稱來識別。

  6. 展開 [訊息佇列] 節點。

  7. 以滑鼠右鍵按一下 [私用佇列],然後按一下 [建立佇列]。

  8. 在佇列名稱中輸入 HelpRequest。請不要選取 [使佇列可交易]。

  9. 接著會建立名為 HelpRequest 的新私用佇列,並出現於 [伺服器總管] 中。

    注意事項:

    您也可以透過 [我的電腦] 圖示來檢視新建的佇列。以滑鼠右鍵按一下桌面的 [我的電腦] 圖示,然後按一下 [管理]。展開 [服務及應用程式] 節點。展開 [訊息佇列] 節點並選取 [私用佇列] 資料夾。新的佇列就會出現在佇列清單中。

若要為您的訊息佇列加入 MessageQueue 元件

  1. 將 HelpRequest 佇列從 [伺服器總管] 拖曳至您的表單上。接著會加入為 HelpRequest 佇列設定的新 MessageQueue 元件至專案中。

    MessageQueue 元件是用於以程式存取您在先前章節中所建之 HelpRequest 佇列包含的訊息。

  2. MessageQueue 元件的 (Name) 屬性設定為 helpRequestQueue。

  3. 在 [屬性] 視窗中展開 MessageReadPropertyFilter 節點。將 [優先權] 的值設定為 true。這會使得訊息的優先權在從佇列擷取訊息時也一起擷取。

    您在接下來程序中建立的使用者介面將允許使用者輸入說明要求的一些文字並設定訊息的優先權。使用者會按一下 [傳送] 按鈕來將要求傳送至佇列。DataGridView 控制項會顯示佇列的內容。使用者介面也包含按鈕來使用佇列目前內容更新資料格以及清除佇列。

若要建立使用者介面

  1. 從 [工具箱] 的 [Windows Form] 索引標籤,將下列控制項加入至 Form1:

  2. 將這些控制項的屬性設定如下:

    控制項

    屬性

    新值

    Label1

    Text

    名稱

    Label2

    Text

    訊息

    TextBox1

    Name

    txtName

     

    Text

    (空白)

    TextBox2

    Name

    txtMessage

     

    Text

    (空白)

     

    Multiline

    true

    Button1

    Name

    sendMessage

     

    Text

    傳送訊息

    Button2

    Name

    refreshMessages

     

    Text

    重新整理訊息清單

    Button3

    Name

    purgeMessages

     

    Text

    清除訊息清單

    CheckBox1

    Name

    highPriority

     

    Text

    高優先權

    DataGridView1

    Name

    messageGrid

  3. 整齊排列控制項。

若要將訊息傳送至佇列

  1. 在設計工具中,按兩下 sendMessage 按鈕,即可在 [程式碼編輯器] 中建立 Click 事件處理常式。

  2. 將程式碼加入至方法,以建立新的 Message 執行個體並將其傳送至佇列,然後更新訊息顯示。您將在下個步驟寫入 DisplayMessages 方法。

    Private Sub sendMessage_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles sendMessage.Click
       Dim theMessage As System.Messaging.Message = _
          New System.Messaging.Message(Me.txtMessage.Text)
       theMessage.Label = Me.txtName.Text
       If highPriority.Checked Then
          theMessage.Priority = Messaging.MessagePriority.Highest
       Else
          theMessage.Priority = Messaging.MessagePriority.Normal
       End If
       helpRequestQueue.Send(theMessage)
       DisplayMessages()
    End Sub
    
    private void sendMessage_Click(object sender, System.EventArgs e)
    {
       System.Messaging.Message theMessage = 
          new System.Messaging.Message(txtMessage.Text);
       theMessage.Label = txtName.Text; 
       if (highPriority.Checked)
          theMessage.Priority = System.Messaging.MessagePriority.Highest;
       else
          theMessage.Priority = System.Messaging.MessagePriority.Normal;
       helpRequestQueue.Send(theMessage);
       DisplayMessages();
    }
    
  3. 在您的專案中加入對 System.Data 的參考。加入 System.Data 的 Imports 陳述式 (.NET 命名空間和型別) (Visual Basic) 或 using (C# 參考) 陳述式。如需詳細資訊,請參閱 管理參考HOW TO:在 Visual Studio 中新增或移除參考 (Visual Basic)

  4. 加入方法,以便於 DataGridView 控制項中顯示佇列的內容。這個方法會使用 MessageQueue.GetAllMessages 方法,從佇列擷取所有訊息。接著將選取的佇列屬性加入至當做 DataGridView 控制項資料來源的 DataTable 物件。若要擷取訊息的文字,您必須建立訊息的格式子 (Formatter)。

    Private Sub DisplayMessages()
       ' Create a DataTable
       Dim messageTable As New DataTable()
       messageTable.Columns.Add("Name")
       messageTable.Columns.Add("Message")
       messageTable.Columns.Add("Priority")
       Dim messages() As System.Messaging.Message
       messages = helpRequestQueue.GetAllMessages()
       ' Need a formatter to get the text of the message body.
       Dim stringFormatter As System.Messaging.XmlMessageFormatter = _
          New System.Messaging.XmlMessageFormatter(New String() _
          {"System.String"})
       Dim index As Integer
       Dim am As System.Messaging.Message
       ' Add each message to the DataTable
       For index = 0 To messages.Length - 1
          messages(index).Formatter = stringFormatter
          am = messages(index)
          messageTable.Rows.Add(New String() _
             {am.Label, am.Body.ToString(), am.Priority.ToString()})
       Next
    
       messageGrid.DataSource = messageTable
    End Sub
    
    private void DisplayMessages()
    {
       DataTable messageTable = new DataTable();
       messageTable.Columns.Add("Name");
       messageTable.Columns.Add("Message");
       messageTable.Columns.Add("Priority");
       System.Messaging.Message[] messages;
       messages = helpRequestQueue.GetAllMessages();
       System.Messaging.XmlMessageFormatter stringFormatter;
       stringFormatter = new System.Messaging.XmlMessageFormatter(
          new string[] {"System.String"});
       for (int index = 0; index < messages.Length; index++) 
       {
          messages[index].Formatter = stringFormatter;
          messageTable.Rows.Add(new string[] {
             messages[index].Label,
             messages[index].Body.ToString(),
             messages[index].Priority.ToString() });
       }
       messageGrid.DataSource = messageTable;
    

    }

若要顯示佇列的內容

  1. 在設計工具中,按兩下 refreshMessage 按鈕,即可在 [程式碼編輯器] 中建立 Click 事件處理常式。

  2. 在 Click 事件處理常式中,呼叫 DisplayMessages 方法。

    Private Sub refreshMessages_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles refreshMessages.Click
       DisplayMessages()
    End Sub
    
    private void refreshMessages_Click(object sender, System.EventArgs e)
    {
       DisplayMessages();
    

    }

若要清除佇列的內容

  1. 在設計工具中,按兩下 purgeMessage 按鈕,即可在 [程式碼編輯器] 中建立 Click 事件處理常式。

  2. 呼叫 helpRequestQueue 的 Purge 方法,然後重新整理 DataGridView 控制項的內容。

    Private Sub purgeMessages_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles purgeMessages.Click
       helpRequestQueue.Purge()
       DisplayMessages()
    End Sub
    
    private void purgeMessages_Click(object sender, System.EventArgs e)
    {
       helpRequestQueue.Purge();
       DisplayMessages();
    

    }

若要測試應用程式

  1. 請按 F5 執行應用程式。

  2. 輸入您的名字和簡短訊息。

  3. 按一下 [送出訊息],將訊息傳送至佇列並更新顯示。

  4. 按一下 [清除訊息] 來刪除佇列中所有訊息。訊息清單現在是空的。

請參閱

工作

HOW TO:建立查詢

HOW TO:建立 MessageQueue 元件執行個體

HOW TO:傳送簡單訊息

HOW TO:擷取訊息

概念

訊息簡介

其他資源

使用訊息元件