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 に答える