如果问题显而易见,请原谅我。我是编程新手,去年七月开始。我构建了一个非常酷的项目,它基于一系列模板打印了数十种报告类型。我清理了一些脏代码后发生了这个特殊问题。我认为这些线路没有任何变化。
这行代码在更改之前完美运行。现在,它似乎甚至没有打开DoWork()的新流程。
//For Reference: this is in Main()
var PrintingTask = new Task(csvStatements.PrintStatementPDF);
PrinterThreads.Add(PrintingTask);
Parallel.ForEach(PrinterThreads, t =>
{
t.Start();
});
Task.WaitAll(PrinterThreads.ToArray());
我评论说,只是从csvStatements作为方法调用运行作业。所以我写了csvStatements.PrintStatementPDF();
在我的代码中,我将语句打印到彩色模板,但我也将它们打印为白页上的文本(因此我们可以使用我们之前使用的最后一篇特殊文章,其上有模板)。
这个任务是这样编写的:
//For Reference: this is in my csvStatements object from above.
using (StreamReader sr = new StreamReader(csvFile))
{
//2d Array. Left dimension is the page number, Right dimension is the text field number.
var Fields = new System.Collections.Generic.List<List<string>>();
while (!sr.EndOfStream)
{
var Field = sr.ReadLine().Split('\t').ToList();
Fields.Add(Field);
}
var BlankVersion = new PrintBlankStatement();
using (var PrintingTask = new Task(() => BlankVersion.PrintBlankStatementPDF(Fields)))
{
PrintingTask.Start();
//I just added the line below. It wasn't originally there.
await Task.WhenAll(PrintingTask);
}
}
并且,当该任务运行时,程序继续将语句打印到模板。所以他们应该并行运行。但现在,当逐步完成项目时,第一个代码块似乎即时执行(这是荒谬的,考虑到它需要做300页pdfs)并且实际上并不生成pdf。第二个代码块 以某种方式 也会以代码0退出程序(即使这是在Main()中完成的,它不应该这样做。)< / p>
我是否对这些使它们无用的任务做了一些更改,或者错误更有可能是我项目中的其他地方?