Я хочу сканировать очередь каждые 10 секунд, используя таймер. Если в этой очереди более 0 элементов, то удалите первый из них, передайте его в качестве аргумента процессу и запустите этот процесс. Таймер должен быть отключен во время выполнения этого процесса. После завершения процесса он должен снова включить таймер.
Элементы в очереди можно добавить вручную или из базы данных.
Следующий код C # не работает после завершения первого процесса. По какой-то причине таймер снова не включен. Может кто-нибудь помочь?
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());
}
}