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.
NetLogic
lifecycle
threading
Start method
Stop method
ExportMethod
LongRunningTask
PeriodicTask
DelayedTask
Dê sua opinião