在C#中执行任务时遇到问题

时间:2017-01-27 16:56:03

标签: c# task

如果问题显而易见,请原谅我。我是编程新手,去年七月开始。我构建了一个非常酷的项目,它基于一系列模板打印了数十种报告类型。我清理了一些脏代码后发生了这个特殊问题。我认为这些线路没有任何变化。

这行代码在更改之前完美运行。现在,它似乎甚至没有打开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>

我是否对这些使它们无用的任务做了一些更改,或者错误更有可能是我项目中的其他地方?

0 个答案:

没有答案