Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo MessageQueue.ReceiveById (String, TimeSpan)

 

Data di pubblicazione: ottobre 2016

Riceve il messaggio che corrisponde all'identificatore specificato (da una coda non transazionale) e attende che un messaggio con l'identificatore specificato è disponibile nella coda o alla scadenza del timeout.

Spazio dei nomi:   System.Messaging
Assembly:  System.Messaging (in System.Messaging.dll)

public Message ReceiveById(
	string id,
	TimeSpan timeout
)

Parametri

id
Type: System.String

Il Id del messaggio da ricevere.

timeout
Type: System.TimeSpan

Oggetto TimeSpan che indica il tempo di attesa fino a quando un messaggio nuovo è disponibile per l'ispezione.

Valore restituito

Type: System.Messaging.Message

Il Message cui Id corrispondenze di proprietà di id passato nel parametro.

Exception Condition
ArgumentNullException

Il valore del parametro id è null.

ArgumentException

Il valore specificato per il timeout parametro non valido, probabilmente timeout è minore di TimeSpan.Zero o maggiore di MessageQueue.InfiniteTimeout.

MessageQueueException

Un messaggio con l'oggetto specificato id non è arrivato nella coda prima della scadenza del timeout.

-oppure-

Si è verificato un errore quando si accede a un metodo di Accodamento messaggi.

Utilizzare questo metodo per leggere un messaggio con un identificatore conosciuto e rimuoverlo dalla coda. Questo metodo restituisce immediatamente se il messaggio con l'identificatore specificato mediante il id parametro si trova nella coda. In caso contrario, il metodo attende il periodo di tempo per l'arrivo di un nuovo messaggio. Se non arriva un nuovo messaggio prima che il timeout scade, viene generata un'eccezione.

Il timeout parametro specifica il totale tempo di esecuzione per questo metodo. Piuttosto, specifica il tempo di attesa per un nuovo messaggio in arrivo nella coda. Ogni volta che arriva un nuovo messaggio, questo metodo esamina la Id del nuovo messaggio per verificare se corrisponde il id parametro. In caso contrario, questo metodo avvia nuovamente il periodo di timeout e attende l'arrivo di un nuovo messaggio. Pertanto, se i nuovi messaggi continuano ad arrivare entro il periodo di timeout, è possibile che questo metodo venga eseguito all'infinito, finché non scade il periodo di timeout senza che arrivino nuovi messaggi o fino a quando non arriva un messaggio la cui proprietà Id corrisponde il id parametro.

Il Id esisterà al massimo un messaggio nella coda corrispondente è univoca in Accodamento messaggi, proprietà di un messaggio di determinato id parametro.

Utilizzare questo overload di ReceiveById(String) quando è accettabile per il thread corrente resti bloccato come nuovi messaggi continuano ad arrivare nella coda durante il periodo di timeout specificato il timeout parametro. Il thread verrà bloccato per il periodo di tempo o in modo indefinito se è stato specificato il valore InfiniteTimeout per il timeout parametro, o se i nuovi messaggi continuano a arrivano nella coda entro il periodo di timeout specificato il timeout parametro.

Altri due metodi consentono di ricevere messaggi da una coda. Il Receive metodo restituisce il primo messaggio della coda e ReceiveByCorrelationId(String) metodo viene utilizzato per recuperare un riconoscimento, un report o un messaggio di risposta generati dall'applicazione che è stato creato come risultato di un messaggio inviato alla coda.

Per leggere un messaggio con un identificatore specificato senza rimuoverlo dalla coda, utilizzare il PeekById(String) metodo. Il PeekById(String) metodo restituisce sempre il primo messaggio della coda, le chiamate successive al metodo restituiscono lo stesso messaggio a meno che un messaggio con priorità più alta arriva nella coda.

Nella tabella seguente indica se questo metodo è disponibile in diverse modalità gruppo di lavoro.

Modalità gruppo di lavoro

Disponibile

Computer locale

Computer locale e il nome di formato direct

Computer remoto

No

Computer remoto e il nome di formato direct

L'esempio di codice seguente illustra l'uso di ReceiveById(String, TimeSpan).


// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, "Example Message Label");

// Get the message's Id property value.
string id = msg.Id;

// Receive the message from the queue.
msg = queue.ReceiveById(id, TimeSpan.FromSeconds(10.0));

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: