CommunicationState Enumerazione
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Definisce gli stati in cui può trovarsi un oggetto ICommunicationObject.
public enum class CommunicationState
public enum CommunicationState
type CommunicationState =
Public Enum CommunicationState
- Ereditarietà
Campi
Closed | 4 | Indica che l'oggetto di comunicazione è stato chiuso e non è più utilizzabile. |
Closing | 3 | Indica che l'oggetto di comunicazione è in fase di transizione allo stato Closed. |
Created | 0 | Indica che è stata creata l'istanza dell'oggetto di comunicazione e che è possibile configurarlo, ma non aprirlo o utilizzarlo. |
Faulted | 5 | Indica che per l'oggetto di comunicazione si è verificato un errore di cui è impossibile eseguire il recupero e che lo rende non più utilizzabile. |
Opened | 2 | Indica che l'oggetto di comunicazione è ora aperto e pronto per l'utilizzo. |
Opening | 1 | Indica che l'oggetto di comunicazione è in fase di transizione dallo stato Created allo stato Opened. |
Commenti
Questa enumerazione definisce gli stati validi per tutti gli oggetti di comunicazione presenti nel sistema, compresi i canali, i listener, le factory, i dispatcher e gli host dei servizi.
I metodi che gestiscono le transizioni tra questi stati e gli eventi che possono essere associati ad essi vengono definiti nell'interfaccia ICommunicationObject. Per ottenere lo stato di oggetto, utilizzare la proprietà State.
Gli oggetti di comunicazione possono trovarsi in quattro stati principali e due transitori: Gli stati principali sono i seguenti:
Data di creazione
Aperto
Chiusa
Con errori
I due stati transitori in cui può trovarsi un oggetto di comunicazione nella transizione tra due stati principali sono i seguenti:
Apertura
Chiusura
L'oggetto di comunicazione può essere configurato nello stato Created. Ad esempio, è possibile modificarne le proprietà e registrane gli eventi. Poiché in questo stato non può aver luogo alcun input o output, non sarà possibile, ad esempio, inviare o ricevere messaggi da un canale.
Opening è uno stato temporaneo immesso dall'oggetto di comunicazione quando viene richiamato il Open metodo. Se non specificato diversamente nelle classi derivate, gli oggetti in stato di pre-apertura non possono essere configurati. Questo stato di transizione può essere immesso solo dallo stato Creato.
Gli oggetti passano allo stato Aperto al termine del processo aperto. Questa transizione allo stato Aperto è valida solo dallo stato Apertura. Se non diversamente specificato nelle classi derivate, in questo stato la configurazione dell'oggetto è disabilitata. In questa fase, l'oggetto è pienamente utilizzabile per il trasferimento dei messaggi.
Closing è uno stato temporaneo immesso dall'oggetto quando viene richiamato il Close metodo per un arresto normale o l'oggetto viene interrotto. In questo stato, l'oggetto diviene inutilizzabile, se non lo è già. Questa transizione è valida da qualsiasi stato, ad eccezione dello stato Chiuso.
Lo stato Closed equivale a essere eliminato e la configurazione dell'oggetto può comunque essere controllata.
Lo stato Faulted viene usato per indicare che l'oggetto è passato a uno stato in cui non può più essere utilizzato. Esistono due scenari principali in cui questa situazione può verificarsi:
Se il metodo Open per qualche motivo non riesce, l'oggetto passa allo stato di errore.
Se un canale basato sulla sessione rileva un errore di cui è impossibile eseguire il recupero, passa allo stato di errore. Questa situazione può verificarsi ad esempio in caso di un errore di protocollo, ovvero un messaggio di protocollo viene ricevuto in un momento non valido, o se l'endpoint remoto interrompe la sessione.
Un oggetto nello stato Faulted non è chiuso e può contenere risorse. Per chiudere un oggetto in stato di errore, è necessario utilizzare il metodo Abort. Se Close viene chiamato su un oggetto nello stato Faulted, viene generata un'eccezione CommunicationObjectFaultedException perché l'oggetto non può essere chiuso normalmente.