Bonjour,
après plusieurs lecture (FAQ et autres) sur les threads, je n'arrive pas à trouver une solution à ce problème:
Je souhaite faire du traitement sur les journaux d'évènements de Windows.
Pour cela j'ai un programme qui:
- Charge un ensemble de règle
- Appelle la fonction de traitement avec un journal (parmis ceux disponibles) et les règles correspondantes au journal
Actuellement, si les règles concerne 5 journaux (System, Application, Security, ....) j'appelle 5 fois ma fonction de traitement.
Au final le temps de traitement est l'addition de tous les temps de traitement.
Mon idée est de lancer un thread de traitement/journal afin que le temps de traitement soit égal au sous temps de traitement le plus long.
Cependant, je ne connait pas le nombre de jounaux concernés dans les règles défini par l'utilisateur. Je ne peut donc pas prévoir combien d'objet thread je doit créé.
J'ai essayé dans une boucle (de 0 au nombre de journaux devant être traités) de lancer un thread:
Mon problème est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 foreach (String eventLog in eventLogNames) { // récupération de l'ensemble de règles dans un ArrayList rulesList = configurationFile.getRulesList(eventLog); Création de mon objet "tf" (utilisant la directive using System.Threading;) ThreadFilter tf = new ThreadFilter(eventLog, syslog, rulesList, debug, lastExecTime, maxExecTime); // création du thread Thread t = new Thread(tf.ThreadLoop); //lancement t.Start(); }
à chaque pas du foreach, eventLog récupère une nouvelle valeur.
Cependant, en déboguant (ecriture dans un fichier texte dans le thread), je vais avoir trois fois la même string eventLog (au lieu de trois valeur différentes).
Comment puis-je lancer X threads en même temps en dissociant les ressources.
Partager