Bonsoir a tous,
Je sollicite à nouveau le forum (je vais finir par me faire remarquer ).
Donc voilà, j'ai une classe destinée a gérer l’exécution de Taches en manipulant indifféremment (ou presque) un certains nombre de Threads ou de Process selon la demande. C'est à l’intérieur de cette classe que je gère les statuts et les pourcentages d'avancement des taches de manière globale (tenant compte de tous les Threads et de tous les Process).
Le problème se pose en ce qui concerne le retour des informations d'avancement provenant des Sub exécutées par les Threads.
La difficulté tiens du fait que les Sub se trouvent en dehors de la classe et que j'aimerais éviter autant que possible de faire référence a des objets en dehors de celle-ci (mais ça me parait difficile de faire autrement ).
J'ai imaginé plusieurs solutions comme ci-dessous mais j'aimerais beaucoup avoir votre avis avant de me lancer :
1- Solution toute simple en déclarant autant de Variables Public 'InfoProgress' que de Sub, celles-ci servant de variable d’échange entre la Sub et la Classe (C'est pas très propre du point de vue POO je trouve).
2- En utilisant les TLS (Threads Local Storage) qui se décline en 2 versions (les emplacements alloués 'Thread.AllocateDataSlot' ou les emplacements nommés 'Thread.AllocateNamedSlot'). L'instanciation des Threads se faisant dans la classe, cela me semble assez facile de lire les infos de chaque Threads.
Faut t'il que j'utilise un Timer dans ma classe comme je l'imagine pour les solutions 1 ou 2 pour lire périodiquement les infos ?
3- A l'aide d’événements levées a l’intérieur de chaque Sub ? (Mais dans ce cas cela me semble compliqué et pas très propre du point de vue POO.
Après il y a peut-être d'autres solutions que je ne connais pas. Ça intéresserais beaucoup de savoir ce qui se fait couramment dans des cas comme celui là.
Merci beaucoup pour votre aide.
Partager