Procedura: visualizzare i messaggi
Aggiornamento: novembre 2007
È possibile utilizzare il metodo Peek per visualizzare il primo messaggio di una coda senza rimuoverlo da quest'ultima. In questo modo al componente è consentito il recupero delle informazioni dalla coda senza impedire alle altre applicazioni o agli altri componenti di recuperare i messaggi da elaborare.
Nota: |
---|
Il metodo Peek consente di visualizzare solo il primo messaggio della coda. Poiché tale messaggio non viene rimosso dalla coda quando viene letto, non è possibile visualizzare i messaggi successivi. Per visualizzare tutti i messaggi di una coda senza rimuoverli da quest'ultima, è possibile utilizzare il metodo GetAllMessages o GetMessageEnumerator. Per ulteriori informazioni, vedere Insiemi di code e di messaggi. |
Se nella coda non è disponibile alcun messaggio quando si effettua la chiamata al metodo Peek, quest'ultimo dovrà attendere l'arrivo di un messaggio. Se si desidera specificare l’intervallo di attesa del metodo, sarà possibile indicare un periodo di timeout. Il periodo di timeout viene specificato come oggetto TimeSpan. In genere, il periodo di timeout viene impostato su zero, nel qual caso il metodo consente di ricercare i messaggi senza attendere, o sull'impostazione predefinita, ovvero un periodo di timeout infinito, nel qual caso l'intervallo di attesa è indefinito. Il periodo di timeout viene impostato nel codice mediante la seguente sintassi:
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout;
msg.set_TimeToBeReceived(System.Messaging.Message.InfiniteTimeout);
È anche possibile eseguire tale impostazione nella finestra Proprietà, mediante la proprietà TimeToBeReceived.
Suggerimento: |
---|
Quando si utilizzano client dipendenti, assicurarsi che l'orologio del computer client sia sincronizzato con quello del server su cui è in esecuzione Accodamento messaggi. In caso contrario, l'invio di un messaggio la cui proprietà TimeToBeReceived è diversa da InfiniteTimeout può determinare un comportamento imprevisto. |
La visualizzazione può essere sincrona o asincrona. Per ulteriori informazioni, vedere Procedura: ricevere messaggi in modo asincrono.
Per visualizzare i messaggi in modalità sincrona
Creare un'istanza del componente MessageQueue e impostarne la proprietà Path sulla coda a cui si desidera fare riferimento. Per ulteriori informazioni, vedere Procedura: creare istanze del componente MessageQueue.
Creare un'istanza dell'oggetto Message che contenga i dati copiati dalla coda mediante il metodo Peek.
Chiamare il metodo Peek per recuperare i dati relativi al primo messaggio della coda. Per impostare un periodo di timeout per il metodo Peek, è anche possibile specificare come oggetto TimeSpan il tempo di attesa desiderato per il metodo, sotto forma di argomento del metodo.
Nel codice riportato di seguito viene illustrato come utilizzare il metodo Peek per restituire e visualizzare le informazioni relative al primo messaggio di una coda.
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(); }
Vedere anche
Attività
Procedura: ricevere messaggi a livello di codice
Procedura: creare istanze del componente MessageQueue