私はこれについてかなりの調査を行いましたが、まだ正しく理解できないようです。1000 ページ (ライブラリを使用) の pdf ファイルを生成する必要があり、さまざまなデータに対してこれを N 回実行する必要があります。データは互いに独立しており、これを並行して完全に生成できます。これが私がやろうとしていることです。理想的には、これをたとえば 10 個のスレッドで実行し、各スレッドが pdf をメモリに生成し、最後に保存したいと考えています。pdf (1000 ページ) ごとに 15 分かかるとします。これを順番に行うと、10 個の pdf ファイルで 150 分、10 スレッドを使用すると 30 分になります。人々がスレッド化をあまり好まないことは知っていますが、それ以外の方法で高速化するにはどうすればよいでしょうか?
私は見ていましたが、4.0でThreadPool
これが新しくなりました。Task
使用すると、各タスクを個別のスレッドで強制的に実行できると読みましたTaskCreationOptions.LongRunning
が、それはうまくいかないようです。私も使用しようとしThreadPool
ましたが、各 PDF は URL から生成されるため、何らかの理由で、WebRequest.Create(url)
スレッドプールから呼び出されたときにメソッドが実行されないようです? しかし、新しい Task ライブラリを機能させたいと思います。
これは私が今持っているものですが、まだ順次実行されているようです。
Task myTask= Task.Factory.StartNew(() =>
{
//code for the task.
//get html content
//generate pdf file.
}
}, new CancellationToken(false), TaskCreationOptions.LongRunning, TaskScheduler.Default);
myTask.Wait();
ここで何が間違っていますか?何か提案があれば、私に知らせてください。現時点では、.net 4.0 を超えることはできません。