1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| private void AlimenterThreads(int fileToLoad, string traitement)
{
for (int iy = 0; iy < maxThreadsToLoad; iy++)
{
if (ThreadInProgress[iy] == null || !ThreadInProgress[iy].IsAlive)
{
log.Debug("thread NULL n°" + iy);
log.Debug("Demarrage du thread= " + iy);
ThreadInProgress[iy] = null;
ThreadInProgress[iy] = new Thread(delegate() { DoWork(fileToLoad, traitement, iy); });
ThreadInProgress[iy].IsBackground = true;
ThreadInProgress[iy].SetApartmentState(ApartmentState.STA);
ThreadInProgress[iy].Name = fileToLoad.ToString();
ThreadInProgress[iy].Start();
log.Info("Thread " + iy + " Démarré NAME= " + ThreadInProgress[iy].Name);
break;
}
else
{
log.Debug("thread n°" + iy + " " + ThreadInProgress[iy].Name);
}
}
}
internal void DoWork(int IdMessage, string Destinataire, int threadNumber)
{
try
{
log.Info("DEBUT : Thread n°" + threadNumber + " du fichier " + IdMessage);
DLLFormatageStandard.AppelProgClass TraitementToRun = new DLLFormatageStandard.AppelProgClass();
TraitementToRun.CallFormate(IdMessage, Destinataire);
log.Info("FIN Thread n°" + threadNumber + " du fichier " + IdMessage);
lock (thisLockThread2)
{
if (lastThreads.ContainsKey(threadNumber))
{
lastThreads[threadNumber] = IdMessage;
log.Debug("Thread =" + threadNumber + " " + IdMessage + " row changed");
}
else
{
log.Debug("Thread =" + threadNumber + " " + IdMessage + " new row");
lastThreads.Add(threadNumber, IdMessage);
}
}
}
catch (Exception ex)
{
log.Error("EXCEPTION DURING THE VB PROCESSING Msg= " + ex.Message + " inner= " + ex.InnerException + " "+ex.Source+ " "+ex.TargetSite+" thread= " + threadNumber + " Fichier= " + IdMessage);
ThreadInProgress[threadNumber] = null;
CreateResetFile();
}
} |
Partager