0
我已经编写了以下代码来循环加载数据表行,并生成PDF(如果它尚不存在)。它可以工作,但它一次性启动wkhtmltoPDF,所以30个进程开始并终止服务器,噢!如何排队系统进程启动
什么是一次启动一个进程而不是从第二个启动直到前一个进程运行的最佳方式?
DB db = new DB();
DataTable dtPosters = db.GetDataTable("select * from Invoices where PDFGenerated <> 1 or PDFGenerated is Null");
foreach (DataRow DR in dtPosters.Rows)
{
//Generate Poster, If exsists (Don't!)
Directory.CreateDirectory(string.Format("D:\\Invoices\\"));
string FilePath = string.Format("D:\\Invoices\\{0}.pdf", DR["InvoiceNumber"].ToString());
if (!File.Exists(FilePath))
{
string CMD = string.Format("C:\\Services\\Automafe\\wkhtmltoPDF.exe http://invoicegen/viewinvoice.aspx?InvoiceNumber={0} {1}", DR["InvoiceNumber"].ToString(), FilePath);
System.Diagnostics.Process.Start("cmd", "/c " + CMD);
}
else
{
//Update the DB
}
}
您可以添加事件侦听器时看到的过程是封闭的,如下:http://stackoverflow.com/a/8455896/575530 – dumbledad 2014-09-10 13:27:13
这一个甚至更好:'process.WaitForExit()'HTTP ://stackoverflow.com/a/3147920/575530 – dumbledad 2014-09-10 13:29:28