1

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

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

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

2 回答 2

1

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

尝试在您的 WriteLine 之后调用Trace.Flush

于 2012-08-27T22:42:56.393 回答
1

我刚刚遇到了类似的问题,尽管我确实花了几个星期的时间来钻研代码以将其挑出来。所以 Task.StartNew 使用了 ThreadPool,如果没有可用的任务将被排队,因此延迟和我无法通过隔离测试找到这个错误的原因,因为我总是有足够的线程在游泳池。oO 多线程乐趣 :) 你可以通过创建和管理你自己的线程池类来解决这个问题。

于 2013-05-03T06:16:19.190 回答