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

Costruttore MessageQueue (String, Boolean)

 

Data di pubblicazione: ottobre 2016

Inizializza una nuova istanza di MessageQueue (classe) che fa riferimento alla coda di Accodamento messaggi nel percorso specificato e con la restrizione di accesso in lettura specificata.

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

public MessageQueue(
	string path,
	bool sharedModeDenyReceive
)

Parametri

path
Type: System.String

Il percorso della coda a cui fa riferimento MessageQueue, che può essere "." per il computer locale. Per informazioni sulla sintassi corretta per questo parametro, vedere la sezione Osservazioni.

sharedModeDenyReceive
Type: System.Boolean

true Per concedere l'accesso esclusivo in lettura per la prima applicazione che accede a coda. in caso contrario, false.

Exception Condition
ArgumentException

Il Path proprietà non è valida, probabilmente perché non è stata impostata.

Utilizzare questo overload quando si desidera associare il nuovo MessageQueue a una determinata coda Accodamento messaggi, per il quale si conosce il percorso, nome di formato o etichetta. Se si desidera concedere l'accesso esclusivo alla prima applicazione che fa riferimento alla coda, impostare il sharedModeDenyReceive parametro true. In caso contrario, impostare sharedModeDenyReceive a false o utilizzare il costruttore che ha solo un path parametro.

L'impostazione sharedModeDenyReceive per true influisce su tutti gli oggetti che accedono alla coda di Accodamento messaggi, comprese le altre applicazioni. Gli effetti del parametro non sono limitati a questa applicazione.

Il MessageQueue costruttore crea una nuova istanza di MessageQueue classe; non viene creata una nuova coda di Accodamento messaggi. Per creare una nuova coda in Accodamento messaggi, utilizzare Create(String).

La sintassi del path parametro dipende dal tipo di coda.

Tipo di coda

Sintassi

Coda pubblica

MachineName\QueueName

Coda privata

MachineName\Private$\QueueName

Coda journal

MachineName\QueueName\Journal$

Coda journal del computer

MachineName\Journal$

Coda dei messaggi non recapitabili

MachineName\Deadletter$

Coda dei messaggi non recapitabili transazionale

MachineName\XactDeadletter$

In alternativa, è possibile utilizzare il nome di formato o l'etichetta di una coda di Accodamento messaggi per descrivere il percorso della coda.

Riferimento

Sintassi

Esempio

Nome di formato

FormatName: [ nome di formato ]

FormatName:Public= 5A5F7535-AE9A-41d4-935C-845C2AFF7112

FormatName:DIRECT=SPX: NetworkNumber; HostNumber\QueueName

FormatName:DIRECT=TCP: IPAddress\QueueName

FormatName:DIRECT=OS: MachineName\QueueName

Etichetta

Label: [ label ]

Label: TheLabel

Per lavorare offline, è necessario utilizzare la sintassi del nome di formato, anziché la sintassi del nome descrittivo. In caso contrario, viene generata un'eccezione perché il controller di dominio primario (in cui risiede Active Directory) non è disponibile per risolvere il percorso per il nome di formato.

Se un MessageQueue apre una coda con il sharedModeDenyReceive parametro impostato su true, qualsiasi MessageQueue che tenteranno successivamente di leggere tale coda genereranno un MessageQueueException a causa di una violazione di condivisione. Oggetto MessageQueueException viene inoltre generata se un MessageQueue tenta di accedere alla coda in modalità esclusiva mentre un altro MessageQueue dispone già dell'accesso non esclusivo alla coda.

Nella tabella seguente mostra i valori di proprietà iniziali per un'istanza di MessageQueue. Questi valori sono basati sulle proprietà della coda di Accodamento messaggi, con il percorso specificato per il path parametro.

Proprietà

Valore iniziale

Authenticate

false.

BasePriority

0.

Category

Empty.

DefaultPropertiesToSend

I valori impostati dal costruttore predefinito della DefaultPropertiesToSend classe.

EncryptionRequired

true, se l'impostazione del livello di privacy della coda di Accodamento messaggi è "Body"; in caso contrario, false.

Formatter

XmlMessageFormatter.

Label

Empty.

MachineName

Il valore della proprietà nome computer della coda di Accodamento messaggi.

MaximumJournalSize

InfiniteQueueSize.

MaximumQueueSize

InfiniteQueueSize.

MessageReadPropertyFilter

I valori impostati dal costruttore predefinito della MessagePropertyFilter classe.

Path

Empty, se non impostato dal costruttore.

QueueName

Empty, se non impostato dal costruttore.

DenySharedReceive

Valore del parametro sharedModeDenyReceive.

UseJournalQueue

true, se l'impostazione del giornale di registrazione dell'oggetto di Accodamento messaggi è abilitata; in caso contrario, false.

Esempio di codice seguente crea un nuovo MessageQueue con accesso esclusivo, viene impostato il percorso e invia un messaggio alla coda.

using System;
using System.Messaging;

namespace MyProject
{
	/// <summary>
	/// Provides a container class for the example.
	/// </summary>
	public class MyNewQueue
	{

		//**************************************************
		// Provides an entry point into the application.
		//		 
		// This example connects to a message queue, and
		// requests exclusive read access to the queue.
		//**************************************************

		public static void Main()
		{
			// Create a new instance of the class.
			MyNewQueue myNewQueue = new MyNewQueue();

			// Output the count of Lowest priority messages.
			myNewQueue.GetExclusiveAccess();

			return;
		}


		//**************************************************
		// Requests exlusive read access to the queue. If
		// access is granted, receives a message from the 
		// queue.
		//**************************************************

		public void GetExclusiveAccess()
		{
			try
			{
				// Request exclusive read access to the queue.
				MessageQueue myQueue = new 
					MessageQueue(".\\myQueue", true);

				// Receive a message. This is where SharingViolation 
				// exceptions would be thrown.
				Message myMessage = myQueue.Receive();
			}

			catch (MessageQueueException e)
			{
				// Handle request for denial of exclusive read access.
				if (e.MessageQueueErrorCode == 
					MessageQueueErrorCode.SharingViolation)
				{
					Console.WriteLine("Denied exclusive read access");
				}

				// Handle other sources of a MessageQueueException.
			}

			// Handle other exceptions as necessary.

			return;
		}
	}
}

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