Definições de religação
Todos os conectores disponibilizam a possibilidade de configurar a religação em caso de desconexão. No elemento gráfico Janela de definições de ligação, tem o seguinte aspeto:

Propriedades de religação
- Interval - O intervalo em que ocorrerão as tentativas de ligação.
- Initially - O número de tentativas para estabelecer a ligação inicial caso esta não tenha sido estabelecida (timeout, falha de rede, etc.).
- Reconnection - O número de tentativas para religar se a ligação tiver sido interrompida durante a operação.
- Timeout - Timeout para uma ligação/desligação bem-sucedida.
- Operating mode - O modo de operação durante o qual as tentativas de ligação devem ser efetuadas.
Definições de religação no código
O mecanismo de religação é configurado através da propriedade ReConnectionSettings e permite monitorizar os seguintes cenários de erro:
- Não é possível estabelecer uma ligação (sem comunicação, nome de utilizador/password incorretos, etc.). A propriedade ReConnectionSettings.AttemptCount define o número de tentativas para estabelecer uma ligação. Por predefinição, é 0, o que significa que o modo está desativado. -1 significa um número infinito de tentativas.
- A ligação foi interrompida durante a operação. A propriedade ReConnectionSettings.ReAttemptCount define o número de tentativas para religar a ligação. Por predefinição, é 100. -1 significa um número infinito de tentativas. 0 - o modo está desativado.
- Ao ligar ou desligar uma ligação, os eventos correspondentes IConnector.Connected ou IConnector.Disconnected podem não ser recebidos durante muito tempo. Para estas situações, pode utilizar a propriedade ReConnectionSettings.TimeOutInterval para definir o timeout máximo aceitável para um evento bem-sucedido. Se, após este tempo, o evento pretendido não ocorrer, o evento IConnector.ConnectionError é gerado com um erro de timeout.
Ao criar um gateway, é necessário inicializar as definições do mecanismo de religação através da propriedade ReConnectionSettings:
// inicializar o mecanismo de reconexão (ele se conectará automaticamente // a cada 10 segundos se o gateway perder a conexão com o servidor) Connector.Adapter.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10); // a reconexão funcionará apenas durante o horário de funcionamento da bolsa selecionada // (para desativar a reconexão quando normalmente não há negociação, por exemplo, à noite) Connector.Adapter.ReConnectionSettings.WorkingTime = ExchangeBoard.Nasdaq.WorkingTime;Para verificar como funciona o mecanismo de controlo da ligação, pode desligar a ligação à Internet:

Abaixo está o log do programa, que mostra que a aplicação está inicialmente num estado ligado e, depois de desligar a ligação à Internet, a aplicação tenta religar. Após restaurar a ligação à Internet, a ligação da aplicação é restaurada:

Uma vez que várias ligações podem ser utilizadas no Connector, por predefinição os eventos relacionados com a religação, como ConnectionRestored, não são acionados, e os adaptadores de ligação tentam religar por si próprios. Para que o evento comece a ser gerado, é necessário definir o valor da propriedade BasketMessageAdapter.SuppressReconnectingErrors do adaptador como false.
Connector.Adapter.SuppressReconnectingErrors = false; Connector.ConnectionError += error => this.Sync(() => MessageBox.Show(this, "Conexão perdida")); Connector.ConnectionRestored += adapter => this.Sync(() => MessageBox.Show(this, "Conexão restaurada"));
