Ciclo de vida do NetLogic

Saiba como o
FactoryTalk Optix
gerencia threads do NetLogic, a execução de Start, Stop e ExportMethod, e o threading de tarefas para obter código confiável. Para obter exemplos de código e uso avançado, consulte a Folha de dicas para NetLogic do FactoryTalk Optix.

Contextos de execução e threads

O
FactoryTalk Optix Runtime
inclui dois contextos de execução principais: o thread da interface do usuário e o thread de comportamento. O thread da interface do usuário renderiza objetos gráficos e manipula a entrada do usuário. O thread de comportamento chama os métodos
Start()
e
Stop()
em comportamentos, incluindo NetLogic, sequencialmente. Esses threads operam de forma independente.
Para obter mais informações sobre pools de tempo de execução, threads dedicados e comportamento de despacho, consulte Modelo de threading de tempo de execução.

Ciclo de vida dos métodos Start e Stop

O tempo de execução chama o método
Start()
quando um nó (página, objeto, widget) é ativado. O tempo de execução chama cada método
Start()
sequencialmente, um de cada vez, no thread de comportamento. Os nós mais profundos iniciam antes de seus pais. Se vários NetLogics compartilham a mesma profundidade, sua ordem segue a travessia da árvore, mas isso não é determinístico.
O tempo de execução chama o método
Stop()
na ordem inversa exata de
Start()
, sequencialmente no thread de comportamento. O tempo de execução registra exceções em
Stop()
e não interrompe a sequência. Depois de
Stop()
, o tempo de execução descarta a instância do NetLogic.
AVISO: Não adicione nem remova nós da árvore da página no método
Start()
de um NetLogic em tempo de execução. Se você precisar modificar a árvore dinamicamente, altere a definição do tipo de página e carregue a página na sessão.
DICA: Se um método
Start()
levar mais de 2.000 ms, o tempo de execução registra um aviso. Métodos
Start()
lentos atrasam a inicialização posterior do NetLogic e podem causar congelamentos visíveis durante o carregamento da página. Durante a navegação entre páginas, o tempo de execução pode chamar
Stop()
na página anterior depois de chamar
Start()
na nova página. Se as páginas compartilharem recursos globais ou externos, essa sobreposição poderá causar comportamento inesperado.

Execução de ExportMethod e segurança de thread

Os métodos decorados com
[ExportMethod]
são executados de forma síncrona no thread que os dispara. O thread depende da origem do disparo: Thread da interface do usuário, thread de comportamento ou um thread de tarefa dedicado. Quando um
[ExportMethod]
é executado em um thread diferente daquele que possui uma variável compartilhada, pode ocorrer acesso simultâneo. Use bloqueios para proteger os dados compartilhados.

Tipos de tarefa e uso de threads

O
FactoryTalk Optix
oferece suporte a vários tipos de tarefa para operações assíncronas:
  • LongRunningTask
    : Thread dedicado, acesso thread-safe ao modelo de informação, uso para operações longas ou de bloqueio.
  • PeriodicTask
    : Thread dedicado, acesso thread-safe, uso para trabalho recorrente.
  • DelayedTask
    : Thread dedicado, acesso thread-safe, uso para ações adiadas de execução única.
  • async/await
    (C#): Usa ThreadPool, não é thread-safe para acesso ao modelo de informação, uso para computação pura ou E/S sem acesso a nó.
DICA:
Todos os tipos de tarefa do
FactoryTalk Optix
são seguros para o modelo de informação. Use
async/await
ou
Task.Run
somente para operações que não acessam nós do projeto.
Para obter mais informações, consulte Código de execução assíncrona.
Dê sua opinião
Tem dúvidas ou comentários sobre esta documentação? Por favor, envie seu comentário aqui.
Normal