CommunicationState Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define os estados em que um ICommunicationObject pode existir.
public enum class CommunicationState
public enum CommunicationState
type CommunicationState =
Public Enum CommunicationState
- Herança
Campos
| Name | Valor | Description |
|---|---|---|
| Created | 0 | Indica que o objeto de comunicação foi instanciado e é configurável, mas ainda não está aberto ou pronto para uso. |
| Opening | 1 | Indica que o objeto de comunicação está a ser transferido do Created estado para o Opened estado. |
| Opened | 2 | Indica que o objeto de comunicação está agora aberto e pronto para ser usado. |
| Closing | 3 | Indica que o objeto de comunicação está a transitar para o Closed estado. |
| Closed | 4 | Indica que o objeto de comunicação foi encerrado e já não é utilizável. |
| Faulted | 5 | Indica que o objeto de comunicação encontrou um erro ou falha do qual não pode recuperar e do qual já não é utilizável. |
Observações
Esta enumeração define os estados válidos para todos os objetos de comunicação no sistema, incluindo canais, ouvintes, fábricas, despachantes e hosts de serviço.
Os métodos que gerem as transições entre estes estados e os eventos que lhes podem ser associados são definidos na ICommunicationObject interface. O estado de um objeto pode ser obtido usando a State propriedade.
Existem quatro estados principais e dois estados transitórios que um objeto de comunicação pode ocupar. Os principais estados são:
Criado
Aberto
Fechadas
Com Erro
Os dois estados transitórios que um objeto de comunicação pode ocupar ao transitar entre estes estados principais são:
Abertura
Encerramento
O objeto de comunicação pode ser configurado no estado Criado. Por exemplo, as suas propriedades podem ser alteradas e os seus eventos podem ser registados. Não pode ocorrer entrada ou saída neste estado. Assim, mensagens, por exemplo, não podem ser enviadas ou recebidas de um canal neste estado.
A Abertura é um estado temporário em que o objeto de comunicação entra quando o Open método é invocado. Salvo indicação em contrário nas classes derivadas, objetos no estado de abertura não podem ser configurados. Este estado de transição só pode ser entrado a partir do estado Criado.
Os objetos transitam para o estado Aberto quando o processo aberto termina. Esta transição para o estado aberto só é válida a partir do estado de abertura. Salvo indicação em contrário nas classes derivadas, a configuração do objeto está agora desativada. Neste ponto, o objeto é totalmente utilizável para transferências de mensagens.
O Fecho é um estado temporário em que o objeto entra quando o Close método é invocado para um desligamento gracioso ou quando o objeto é abortado. Neste ponto, o objeto torna-se (se não é já) inutilizável. Esta transição é válida a partir de qualquer estado, exceto o estado Fechado.
O estado fechado equivale a ser descartado e a configuração do objeto ainda pode ser inspecionada.
O estado Falhado é usado para indicar que o objeto transitou para um estado em que já não pode ser utilizado. Existem dois cenários principais em que isto pode acontecer:
Se o Open método falhar por qualquer motivo, o objeto transita para o estado falhado.
Se um canal baseado em sessão detetar um erro do qual não pode recuperar, transita para o estado falhado. Isto pode acontecer, por exemplo, se houver um erro de protocolo (ou seja, receber uma mensagem de protocolo num momento inválido) ou se o endpoint remoto abortar a sessão.
Um objeto no estado Faulted não está fechado e pode estar a armazenar recursos. O Abort método deve ser usado para fechar um objeto que tenha falhado. Se Close for chamado a um objeto no estado Faulted, a CommunicationObjectFaultedException é lançado porque o objeto não pode ser fechado graciosamente.