HOW TO:窺視訊息
更新:2007 年 11 月
您可以使用 Peek 方法來查看任何佇列的第一個訊息,而不需從佇列移除訊息。這允許您的元件從佇列取得資訊,而不會防止其他應用程式或元件擷取它們要處理的訊息。
注意事項: |
---|
Peek 只允許您檢視佇列上的第一個訊息。由於當您窺視這個訊息時並不會將它從佇列移除,因此您就無法窺視接下來的訊息。如果您要檢視佇列中的所有訊息,而不要從佇列中將其移除,則可使用 GetAllMessages 方法或 GetMessageEnumerator 方法。如需詳細資訊,請參閱佇列和訊息集合。 |
若當您呼叫 Peek 方法時佇列中並沒有訊息,則該方法會等候直到訊息到達。如果您只要方法等候指定的一段時間,您可以指定逾時時限。逾時時限是以 TimeSpan 物件來指定。在多數情況下,逾時時限會設定為零來檢查訊息但不等候,或是設定為預設的無限設定來一直等候下去。您可以使用以下語法來在程式碼中設定逾時時限:
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout;
msg.set_TimeToBeReceived(System.Messaging.Message.InfiniteTimeout);
您也可以透過設定 TimeToBeReceived 屬性,在 [屬性] 視窗中進行設定。
秘訣 |
---|
當您使用相依用戶端時,請確定用戶端電腦上的時鐘會與執行訊息佇列之伺服器上的時鐘保持同步。否則,當傳送 TimeToBeReceived 屬性不是 InfiniteTimeout 的訊息時,可能會發生無法預期的行為。 |
窺視可以是同步或非同步。如需詳細資訊,請參閱 HOW TO:以非同步方式接收訊息。
若要同步窺視訊息
建立 MessageQueue 元件的執行個體,並將其 Path 屬性設定為您要參考的佇列。如需詳細資訊,請參閱 HOW TO:建立 MessageQueue 元件執行個體。
呼叫 Peek 方法來取得佇列上第一個訊息的資料。若要選擇指定 Peek 方法的逾時時限,請將您要方法等候的時間 (也就是 TimeSpan 物件) 輸入為方法的引數。
例如,下列程式碼將說明您如何使用 Peek 方法來傳回並顯示佇列上第一個訊息的資訊。
Public Sub LookFirstMessage() Dim NewQueue As New System.Messaging.MessageQueue(".\MyQueue") Dim FirstMessage As System.Messaging.Message FirstMessage = NewQueue.Peek Dim targetNames() As String = {"System.String,mscorlib"} FirstMessage.Formatter = _ New System.Messaging.XmlMessageFormatter(targetNames) Dim label As String = CStr(FirstMessage.Label) End Sub
public void LookFirstMessage() { System.Messaging.MessageQueue newQueue = new System.Messaging.MessageQueue(".\\MyQueue"); System.Messaging.Message firstMessage; string[] types = { "System.String,mscorlib" }; firstMessage = newQueue.Peek(); firstMessage.Formatter = new System.Messaging.XmlMessageFormatter(types); string label = firstMessage.Label.ToString(); }