Cycle de vie de NetLogic
Découvrez comment
FactoryTalk Optix
gère les threads NetLogic, l’exécution de Start, Stop et ExportMethod, ainsi que la gestion des threads de tâche afin de garantir la fiabilité du code. Pour voir des exemples de code et des cas d’utilisation avancés, consultez l’aide-mémoire NetLogic de FactoryTalk Optix.Contextes d’exécution et threads
FactoryTalk Optix Runtime
inclut deux contextes d’exécution principaux : le thread d’interface utilisateur et le thread de comportement. Le thread d’interface utilisateur effectue le rendu des objets graphiques et gère les entrées de l’utilisateur. Le thread de comportement appelle séquentiellement les méthodes Start()
et Stop()
sur les comportements, y compris NetLogic. Ces threads fonctionnent indépendamment.Pour plus d’informations sur les pools d’exécution, les threads dédiés et le comportement de distribution, reportez-vous à la section Modèle de gestion des threads d’exécution.
Cycle de vie des méthodes Start et Stop
L’exécution appelle la méthode
Start()
lorsqu’un nœud (page, objet, widget) s’active. L’exécution appelle chaque méthode Start()
séquentiellement, une à la fois, sur le thread de comportement. Les nœuds plus profonds démarrent avant leurs parents. Si plusieurs NetLogics se trouvent au même niveau de profondeur, leur ordre suit le parcours de l’arborescence, mais cela n’est pas déterministe.L’exécution appelle la méthode
Stop()
dans l’ordre exactement inverse de Start()
, séquentiellement sur le thread de comportement. L’exécution consigne les exceptions dans Stop()
et n’interrompt pas la séquence. Après Stop()
, l’exécution libère l’instance NetLogic.
AVERTISSEMENT:
N’ajoutez ni ne supprimez de nœuds dans l’arborescence de la page au sein de la méthode
Start()
d’un NetLogic d’exécution. Si vous devez modifier l’arborescence dynamiquement, modifiez la définition du type de page et chargez la page dans la session.
CONSEIL:
Si une méthode
Start()
prend plus de 2000 ms, l’exécution consigne un avertissement. Les méthodes Start()
lentes retardent l’initialisation ultérieure de NetLogic et peuvent provoquer des blocages visibles lors du chargement de la page. Pendant la navigation entre les pages, l’exécution peut appeler Stop()
sur la page précédente après avoir appelé Start()
sur la nouvelle page. Si les pages partagent des ressources globales ou externes, ce chevauchement peut entraîner un comportement inattendu.Exécution de ExportMethod et sécurité des threads
Les méthodes décorées avec
[ExportMethod]
sont exécutées de manière synchrone sur le thread qui les déclenche. Le thread dépend de la source de déclenchement : Thread d’interface utilisateur, thread de comportement ou thread de tâche dédié. Lorsqu’une [ExportMethod]
est exécutée sur un thread différent de celui qui possède une variable partagée, un accès simultané peut se produire. Utilisez des verrous pour protéger les données partagées.Types de tâches et utilisation des threads
FactoryTalk Optix
prend en charge plusieurs types de tâches pour les opérations asynchrones :- LongRunningTask: Thread dédié, accès thread-safe au modèle d’information, à utiliser pour les opérations longues ou bloquantes.
- PeriodicTask: Thread dédié, accès thread-safe, à utiliser pour les tâches récurrentes.
- DelayedTask: Thread dédié, accès thread-safe, à utiliser pour les actions différées ponctuelles.
- async/await(C#) : Utilise ThreadPool, ne garantit pas un accès thread-safe au modèle d’information et convient aux calculs purs ou aux opérations d’E/S sans accès aux nœuds.
CONSEIL:
Tous les types de tâches
FactoryTalk Optix
permettent un accès sécurisé au modèle d’information. Utilisez async/await
ou Task.Run
uniquement pour les opérations qui n’accèdent pas aux nœuds du projet.Pour plus d’informations, consultez Exécuter du code asynchrone.
NetLogic
lifecycle
threading
Start method
Stop method
ExportMethod
LongRunningTask
PeriodicTask
DelayedTask
Fournir une réponse