我看到这种奇怪的行为,运行时有时在调用时无法启动任务Task.Factory.StartNew
。我在调试器中专门检查它,但由于某种原因,任务没有运行。这种情况偶尔发生,有时候任务开始,有时则没有。
Task.Factory.StartNew(() =>
{
Extract(fileName);
}, TaskCreationOptions.LongRunning);
private static void Extract(String fileName)
{
Trace.WriteLine("Extract------------------ --------------- ---");
}
答案 0 :(得分:1)
任务代码可能正在运行,但您没有看到输出,因为它不会(总是)被刷新到您的屏幕/文件/其他任何内容。
尝试在WriteLine之后调用Trace.Flush。
答案 1 :(得分:0)
我刚刚遇到了类似的问题,虽然我花了几个星期的时间来挖掘代码来解决这个问题。所以Task.StartNew使用ThreadPool,如果没有任何可用你的任务将排队,因此延迟和我无法通过隔离测试找到此错误的原因,因为我总是有足够的线程在游泳池。 o.O MultiThreading乐趣:) 您可以通过创建和管理自己的线程池(如类)来解决此问题。