PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Consommation CPU importante et blocage IHM. Résolution par reprise de focus
Consommation CPU importante et blocage IHM. Résolution par reprise de focus
Débuté par David P., 13 oct. 2017 09:06 - Aucune réponse
Posté le 13 octobre 2017 - 09:06
Bonjour,

Je vous écris aujourd'hui afin de, je l'espère, trouver une solution à un problème que je rencontre.
Je vais essayer de décrire au mieux le problème rencontré:

Mon application sert d'interface entre notre ERP et une machine de production (pilotée par un automate Schneider Téléméca). Afin de récupérer les variables de l'automate, j'utilise l'OPC UA (le serveur est KEPServerEx) par le biais des DLL "Client Ace" (Liste d'objets OPC UA pré-instanciés et propriété de KEP) qui sont initialement prévues pour être intégrées en tant que Toolkit dans Visual Studio. Un DotNetDelegue me permet d'exécuter une procédure Windev suite à un changement de valeur de variable dans le serveur (Principe du "OnDataChanged"). Tout le principe de fonctionnement de l'OPC dans WIndev fonctionne (à mes erreurs près) dans différentes applications que j'ai faites.
Ma procédure va finalement remplir un certain nombre de variables globales. En fin de procédure, l'IHM est mise à jour (SourceVersEcran exécuté bien sur dans le thread principal).

L'application étant présentée, voici mon problème. Celui-ci est présent sur le poste utilisateur (un panel PC fonctionnant sous Win10 IOT Entry avec un processeur Intel ATOM) mais pas sur mon poste de développement (I5, Win10).
Une fois la procédure terminée et l'IHM à jour (les champs sont effectivement à jour), l'IHM se trouve bloquée. Un tour par le gestionnaire de tâches montre alors une consommation CPU de 20% (constante) pour mon application. Au bout de quelques minutes, celle-ci va revenir aux alentours de 2-3% et l'application sera de nouveau utilisable.
Cependant, il est possible de débloquer l'application et de revenir à une consommation normale d'une manière très simple : en faisant reprendre le focus à l'application! En effet, si après ouvert le gestionnaire de tâches (mais cela fonctionne aussi avec Chrome ou l'explorateur Windows) on revient sur l'application, le problème est résolu ...

N'étant pas un expert en applications multi-thread, comme c'est le cas ici, je m'en remets à votre expérience en espérant que des utilisateurs aient déjà rencontré ce cas de figure.

Toute piste de solution étant bonne à prendre, je reste à votre écoute.

Merci d'avance!

David