Task.Factory.StartNew并不总是启动任务

时间:2012-08-27 22:34:35

标签: c# .net task-parallel-library

我看到这种奇怪的行为,运行时有时在调用时无法启动任务Task.Factory.StartNew。我在调试器中专门检查它,但由于某种原因,任务没有运行。这种情况偶尔发生,有时候任务开始,有时则没有。

Task.Factory.StartNew(() =>
                        {
                            Extract(fileName);
                        }, TaskCreationOptions.LongRunning);  

        private static void Extract(String fileName)
        {
   Trace.WriteLine("Extract------------------     ---------------      ---");
        }

2 个答案:

答案 0 :(得分:1)

任务代码可能正在运行,但您没有看到输出,因为它不会(总是)被刷新到您的屏幕/文件/其他任何内容。

尝试在WriteLine之后调用Trace.Flush

答案 1 :(得分:0)

我刚刚遇到了类似的问题,虽然我花了几个星期的时间来挖掘代码来解决这个问题。所以Task.StartNew使用ThreadPool,如果没有任何可用你的任务将排队,因此延迟和我无法通过隔离测试找到此错误的原因,因为我总是有足够的线程在游泳池。 o.O MultiThreading乐趣:) 您可以通过创建和管理自己的线程池(如类)来解决此问题。