Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11] Impressions dans des thread

6 réponses
Avatar
J-M des Grottes
Bonsoir,

Dans mon application médicale, j'ai de nombreuses possibilités
d'impressions.
Comme cela concerne parfois un nombre important de patients, je
voudrais que l'utilisateur de l'application soit débarrassé le plus
vite possible de la pahse d'impressions qui peut prendre du temps.

Plusieurs possibilités s'offrent à moi:

1) Utiliser un serveur d'impression (bon exemple dans la dernière LST.
L'astuce est que le serveur est "loin" et que les imprimantes
concernées sont sur plusieurs sites mais c'est à retenir..

2) Utiliser des thread en combinant la complilation dynamique. En
clair, je complile le code servant à imprimer. La procédure résulant de
cette compilation est exécutée dans un thread. Le nom ce cette
procédure change (="P"+datesys+heuresys) de manière à permettre à
l'utilisateur d'utilser la même procédure alors que la première n'est
pas terminée

Avez-vous d'autres idées ?

Merci

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique

6 réponses

Avatar
patrice
"J-M des Grottes" <j-mdesgrottes(nospam)@skynet.be> a écrit dans le message
de news:
2) Utiliser des thread en combinant la complilation dynamique. En
clair, je complile le code servant à imprimer. La procédure résulant de
cette compilation est exécutée dans un thread. Le nom ce cette
procédure change (="P"+datesys+heuresys) de manière à permettre à
l'utilisateur d'utilser la même procédure alors que la première n'est
pas terminée




tres tres mauvaise idée en wd10: les exceptions ne sont pas gérés par la
compilation dynamique
du coup le thread peut s'arreter à tout moment avec la fenetre de traitement
d'exception.
a essayer en wd11 avant de se lancer. essayer d'appeler dynamiquement la
fonction suivante.

procedure test()
quand exception dans
d est une date
d..jour=0
renvoyer ""
faire
renvoyer exceptioninfo()
exceptionactive()
fin

du coup, la solution que j'utilise est un exécutable bis (qui peut etre le
meme qui l'original), qui scan un fichier et exécute les traitements
d'impression qui sont dedans. et apres il suffit de mettre cet exécutable en
tant que service.
Avatar
patrice
"J-M des Grottes" <j-mdesgrottes(nospam)@skynet.be> a écrit dans le message
de news:
cette compilation est exécutée dans un thread. Le nom ce cette
procédure change (="P"+datesys+heuresys) de manière à permettre à
l'utilisateur d'utilser la même procédure alors que la première n'est
pas terminée



tu te galere pour rien.
active la gestion à la mimine des sections critiques
prend un context hyperfile indépendant pour chaque thread.

du coup, la seule chose qui tu doit gérer en section critique expliciement :
- l'acces concurrent au variable globale en écriture/lecture
(un thread écrit, un autre lit, cela peut être génant si la lecture est
partielle)
- l'acces concurrent aux enregistrements du fichier
si plusieurs thread lise une fiche instruction pour l'éxécuté (prévoi des
lock)
mais attention, dans ton cas, je pense que tu ne peux avoir au plus qu'un
thread par imprimante (a quoi sert d'avoir 10 générations simultanées
d'états, si un seul à la fois peut être imprimer)
Avatar
J-M des Grottes
Dans son message précédent, patrice a écrit :
"J-M des Grottes" <j-mdesgrottes(nospam)@skynet.be> a écrit dans le message
de news:
2) Utiliser des thread en combinant la complilation dynamique. En
clair, je complile le code servant à imprimer. La procédure résulant de
cette compilation est exécutée dans un thread. Le nom ce cette
procédure change (="P"+datesys+heuresys) de manière à permettre à
l'utilisateur d'utilser la même procédure alors que la première n'est
pas terminée




tres tres mauvaise idée en wd10: les exceptions ne sont pas gérés par la
compilation dynamique
du coup le thread peut s'arreter à tout moment avec la fenetre de traitement
d'exception.
a essayer en wd11 avant de se lancer. essayer d'appeler dynamiquement la
fonction suivante.

procedure test()
quand exception dans
d est une date
d..jour=0
renvoyer ""
faire
renvoyer exceptioninfo()
exceptionactive()
fin

du coup, la solution que j'utilise est un exécutable bis (qui peut etre le
meme qui l'original), qui scan un fichier et exécute les traitements
d'impression qui sont dedans. et apres il suffit de mettre cet exécutable en
tant que service.





Cela marche très bien et les exceptions semblent gérées, en tous les
cas je reçois l'info de l'exception ...)

Par ailleurs, ton executable scanne un fichier qui contient quoi ?
Le code d'impression ?(cela revient au même puisqu'il faut le
compiler), Le nom de l'état ? (OK, mais alors comment connaître les
paramètres éventuels à injecter dans l'état ou sa requête)...

Comme quoi chacun a ses idées et ses recettes

A+

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
Avatar
patrice
"J-M des Grottes" <j-mdesgrottes(nospam)@skynet.be> a écrit dans le message
de news:

Par ailleurs, ton executable scanne un fichier qui contient quoi ?
Le code d'impression ?(cela revient au même puisqu'il faut le
compiler), Le nom de l'état ? (OK, mais alors comment connaître les
paramètres éventuels à injecter dans l'état ou sa requête)...




ca contient bien sur le nom de l'état.
et pour les paramètres de l'état j'ai un fichier de type Nom/Valeur associé
à l'état à imprimer
Avatar
J-M des Grottes
patrice avait prétendu :
"J-M des Grottes" <j-mdesgrottes(nospam)@skynet.be> a écrit dans le message
de news:

Par ailleurs, ton executable scanne un fichier qui contient quoi ?
Le code d'impression ?(cela revient au même puisqu'il faut le
compiler), Le nom de l'état ? (OK, mais alors comment connaître les
paramètres éventuels à injecter dans l'état ou sa requête)...




ca contient bien sur le nom de l'état.
et pour les paramètres de l'état j'ai un fichier de type Nom/Valeur associé
à l'état à imprimer



Merci Msieur et bon dev

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
Avatar
J-M des Grottes
patrice avait énoncé :
"J-M des Grottes" <j-mdesgrottes(nospam)@skynet.be> a écrit dans le message
de news:
cette compilation est exécutée dans un thread. Le nom ce cette
procédure change (="P"+datesys+heuresys) de manière à permettre à
l'utilisateur d'utilser la même procédure alors que la première n'est
pas terminée



tu te galere pour rien.
active la gestion à la mimine des sections critiques
prend un context hyperfile indépendant pour chaque thread.

du coup, la seule chose qui tu doit gérer en section critique expliciement :
- l'acces concurrent au variable globale en écriture/lecture
(un thread écrit, un autre lit, cela peut être génant si la lecture est
partielle)
- l'acces concurrent aux enregistrements du fichier
si plusieurs thread lise une fiche instruction pour l'éxécuté (prévoi des
lock)
mais attention, dans ton cas, je pense que tu ne peux avoir au plus qu'un
thread par imprimante (a quoi sert d'avoir 10 générations simultanées
d'états, si un seul à la fois peut être imprimer)



En mettant un sémaphore dans mes chaines à compiler, les thread
d'impression sont envoyés les uns derrière les autres et ne bloquent
pas l'utilisateur
Merci

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique