我想要使用計時器每10秒掃描一次隊列。如果該隊列中有多於0個項目,則將第一個項目作爲Deque,將其作爲參數傳遞給Process並運行該進程。在執行此過程時應禁用計時器。一旦進程退出,它應該重新啓用計時器。進程隊列計時器
隊列中的項目可以手動添加或可以來自數據庫。
以下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());
}
}
該進程可以根據它必須處理的數據量運行可變的時間量。問題是它不能並行運行,這就是爲什麼我必須排隊。這個過程所花費的時間可以在30秒到3小時之間。在此期間,我的軟件也必須執行其他任務,所以不能使用WaitForExit()。 – 2010-08-23 07:56:07