Je souhaite analyser une file d'attente toutes les 10 secondes à l'aide d'une minuterie. S'il y a plus de 0 éléments dans cette file d'attente, alors déposez le premier, passez-le en tant qu'argument à un processus et exécutez ce processus. La minuterie doit être désactivée pendant l'exécution de ce processus. Une fois le processus terminé, il devrait réactiver le minuteur.Minuterie de file d'attente de processus
Les éléments de la file d'attente peuvent être ajoutés manuellement ou peuvent provenir d'une base de données.
Le code C# suivant ne fonctionne pas une fois le premier processus terminé. Pour une raison quelconque, la minuterie n'est pas activée à nouveau. Quelqu'un peut-il aider?
public MainForm()
{
InitializeComponent();
queue = new Queue<string>();
process = new Process();
process.Exited += new EventHandler(Process_Exited);
process.EnableRaisingEvents = true;
}
void StartProcess(string args)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = @"C:\Program Files\My Software\RunProcess.exe";
psi.Arguments = args;
psi.WindowStyle = ProcessWindowStyle.Minimized;
process.StartInfo = psi;
process.Start();
}
void Process_Exited(object sender, EventArgs e)
{
timer.Enabled = true;
}
void Timer_Tick(object sender, EventArgs e)
{
if (queue.Count > 0)
{
timer.Enabled = false;
StartProcess(queue.Dequeue());
}
}
Le processus peut s'exécuter pendant une durée variable en fonction du volume de données qu'il doit traiter. Le problème est qu'il ne peut pas fonctionner en parallèle, c'est pourquoi je dois faire une file d'attente. Le temps pris par ce processus peut être compris entre 30 secondes et 3 heures. Au cours de laquelle mon logiciel doit également effectuer d'autres tâches, il ne peut donc pas utiliser WaitForExit(). –